ฉันกำลังพยายามตั้งค่า PostgreSQL ด้วยสคริปต์ทุบตีซึ่งรับตัวแปรจากไฟล์ .env
รหัสของฉัน -
#!/bin/bash
DB_NAME=$(grep DB_NAME .env | ตัด -d '=' -f 2-)
DB_USER=$(grep DB_USER .env | ตัด -d '=' -f 2-)
DB_PASSWORD=$(grep DB_PASSWORD .env | ตัด -d '=' -f 2-)
ก้อง $DB_NAME;
ก้อง $DB_USER;
สะท้อน $DB_PASSWORD;
sudo -u postgres psql -c "สร้างฐานข้อมูล $DB_NAME;"
sudo -u postgres psql -c "สร้างผู้ใช้ $DB_USER ด้วยรหัสผ่าน '$DB_PASSWORD';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET client_encoding เป็น 'utf8';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET default_transaction_isolation เป็น 'อ่านแล้วมุ่งมั่น';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET เขตเวลาเป็น 'UTC';"
sudo -u postgres psql -c "มอบสิทธิ์ทั้งหมดบนฐานข้อมูล $DB_NAME ถึง $DB_USER;"
ถ้าฉันสะท้อนตัวแปรก่อนที่จะรันฐานข้อมูล postgres ที่สร้างบรรทัดดังต่อไปนี้ ตัวแปรเหล่านั้นจะแสดงผลตัวแปรที่ถูกต้องที่อ่านจากไฟล์ .env
#!/bin/bash
DB_NAME=$(grep DB_NAME .env | ตัด -d '=' -f 2-)
DB_USER=$(grep DB_USER .env | ตัด -d '=' -f 2-)
DB_PASSWORD=$(grep DB_PASSWORD .env | ตัด -d '=' -f 2-)
ก้อง $DB_NAME;
ก้อง $DB_USER;
สะท้อน $DB_PASSWORD;
sudo -u postgres psql -c "สร้างฐานข้อมูล $DB_NAME;"
sudo -u postgres psql -c "สร้างผู้ใช้ $DB_USER ด้วยรหัสผ่าน '$DB_PASSWORD';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET client_encoding เป็น 'utf8';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET default_transaction_isolation เป็น 'อ่านแล้วมุ่งมั่น';"
sudo -u postgres psql -c "เปลี่ยนบทบาท $DB_USER SET เขตเวลาเป็น 'UTC';"
sudo -u postgres psql -c "มอบสิทธิ์ทั้งหมดบนฐานข้อมูล $DB_NAME ถึง $DB_USER;"
แต่หลังจากรันสคริปต์แล้ว ฉันไม่สามารถเข้าสู่ระบบด้วยชุดผู้ใช้และรหัสผ่านโดยใช้ -
psql -h localhost -d mydb -U myuser -p 5432
หลังจากป้อนรหัสผ่านจะแสดง -
psql: ข้อผิดพลาด: FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "myuser"
FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "mydb"
ไฟล์ .env ของฉันมีลักษณะดังนี้ -
#WORK_ENV สามารถเป็นแบบโลคัล การทดสอบ การจัดเตรียม หรือการผลิต
WORK_ENV=ท้องถิ่น
#รหัสลับจังโก้
SECRET_KEY='your-secret-key-goes-here'
#ฐานข้อมูล
DB_NAME=your_db_name
DB_USER=your_db_user_name
DB_PASSWORD=your_db_password
DB_HOST=โลคัลโฮสต์
DB_PORT=5432
SENTRY_DSN=ลิงค์โครงการเฉพาะของคุณ