Tôi đang cố gắng thiết lập PostgreSQL bằng tập lệnh bash lấy các biến từ tệp .env.
Mã của tôi -
#!/bin/bash
DB_NAME=$(grep DB_NAME .env | cut -d '=' -f 2-)
DB_USER=$(grep DB_USER .env | cut -d '=' -f 2-)
DB_PASSWORD=$(grep DB_PASSWORD .env | cut -d '=' -f 2-)
tiếng vang $DB_NAME;
tiếng vang $DB_USER;
tiếng vang $DB_PASSWORD;
sudo -u postgres psql -c "TẠO CƠ SỞ DỮ LIỆU $DB_NAME;"
sudo -u postgres psql -c "TẠO NGƯỜI DÙNG $DB_USER VỚI MẬT KHẨU '$DB_PASSWORD';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read commit';"
sudo -u postgres psql -c "THAY ĐỔI VAI TRÒ $DB_USER ĐẶT múi giờ THÀNH 'UTC';"
sudo -u postgres psql -c "CẤP TẤT CẢ CÁC ĐẶC QUYỀN TRÊN CƠ SỞ DỮ LIỆU $DB_NAME CHO $DB_USER;"
Nếu tôi lặp lại các biến trước khi chạy cơ sở dữ liệu postgres tạo các dòng như sau, chúng sẽ xuất các biến chính xác được đọc từ tệp .env.
#!/bin/bash
DB_NAME=$(grep DB_NAME .env | cut -d '=' -f 2-)
DB_USER=$(grep DB_USER .env | cut -d '=' -f 2-)
DB_PASSWORD=$(grep DB_PASSWORD .env | cut -d '=' -f 2-)
tiếng vang $DB_NAME;
tiếng vang $DB_USER;
tiếng vang $DB_PASSWORD;
sudo -u postgres psql -c "TẠO CƠ SỞ DỮ LIỆU $DB_NAME;"
sudo -u postgres psql -c "TẠO NGƯỜI DÙNG $DB_USER VỚI MẬT KHẨU '$DB_PASSWORD';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read commit';"
sudo -u postgres psql -c "THAY ĐỔI VAI TRÒ $DB_USER ĐẶT múi giờ THÀNH 'UTC';"
sudo -u postgres psql -c "CẤP TẤT CẢ CÁC ĐẶC QUYỀN TRÊN CƠ SỞ DỮ LIỆU $DB_NAME CHO $DB_USER;"
Nhưng sau khi tập lệnh được chạy, tôi không thể đăng nhập bằng tổ hợp người dùng và mật khẩu bằng cách sử dụng -
psql -h localhost -d mydb -U myuser -p 5432
Sau khi nhập mật khẩu, nó hiển thị -
psql: lỗi: FATAL: xác thực mật khẩu không thành công cho người dùng "myuser"
FATAL: xác thực mật khẩu không thành công cho người dùng "mydb"
Tệp .env của tôi trông như thế này -
#WORK_ENV có thể là cục bộ, thử nghiệm, dàn dựng hoặc sản xuất
WORK_ENV=cục bộ
# khóa bí mật django
SECRET_KEY='khoá-bí-mật-của-bạn-đi-tại-đây'
# cơ sở dữ liệu
DB_NAME=your_db_name
DB_USER=your_db_user_name
DB_PASSWORD=your_db_password
DB_HOST=máy chủ cục bộ
DB_PORT=5432
SENTRY_DSN=your-unique-sentry-project-link