Încerc să configurez PostgreSQL cu un script bash care preia variabilele dintr-un fișier .env.
Codul meu -
#!/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-)
echo $DB_NAME;
echo $DB_USER;
echo $DB_PASSWORD;
sudo -u postgres psql -c "CREATE BAZA DE DATE $DB_NAME;"
sudo -u postgres psql -c "CREAȚI UTILIZATOR $DB_USER CU PAROLA '$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 LA 'citire comisă';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
sudo -u postgres psql -c "ACORĂ TOATE PRIVILEGIILE PE BAZĂ DE DATE $DB_NAME LA $DB_USER;"
Dacă ecou variabilele înainte de a rula baza de date postgres creând linii ca următoarele, acestea scot variabile corecte citite din fișierul .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-)
echo $DB_NAME;
echo $DB_USER;
echo $DB_PASSWORD;
sudo -u postgres psql -c "CREATE BAZA DE DATE $DB_NAME;"
sudo -u postgres psql -c "CREAȚI UTILIZATOR $DB_USER CU PAROLA '$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 LA 'citire comisă';"
sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
sudo -u postgres psql -c "ACORĂ TOATE PRIVILEGIILE PE BAZĂ DE DATE $DB_NAME LA $DB_USER;"
Dar după ce scriptul este rulat, nu mă pot conecta cu combinația de utilizator și parolă folosind -
psql -h localhost -d mydb -U myuser -p 5432
După introducerea parolei, arată -
psql: eroare: FATAL: autentificarea parolei a eșuat pentru utilizatorul „myuser”
FATAL: autentificarea parolei a eșuat pentru utilizatorul „mydb”
Fișierul meu .env arată așa -
#WORK_ENV poate fi local, de testare, de punere în scenă sau de producție
WORK_ENV=local
# cheie secretă django
SECRET_KEY='cheia-ta-secretă-aici'
# Bază de date
DB_NAME=numele_db_dv
DB_USER=numele_utilizator_db_db
DB_PASSWORD=parola_db_db
DB_HOST=localhost
DB_PORT=5432
SENTRY_DSN=link-ul-unic-de-proiect-sentinelă