Я пытаюсь настроить PostgreSQL с помощью сценария bash, который берет переменные из файла .env.
Мой код -
#!/бин/баш
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-)
эхо $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 TO 'utf8';"
sudo -u postgres psql -c "ИЗМЕНИТЬ РОЛЬ $DB_USER SET default_transaction_isolation TO 'чтение зафиксировано';"
sudo -u postgres psql -c "ИЗМЕНИТЬ РОЛЬ $DB_USER УСТАНОВИТЬ часовой пояс НА 'UTC';"
sudo -u postgres psql -c "ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА БАЗУ ДАННЫХ $DB_NAME ДЛЯ $DB_USER;"
Если я повторяю переменные перед запуском базы данных postgres, создавая строки, подобные приведенным ниже, они выводят правильные переменные, считанные из файла .env.
#!/бин/баш
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-)
эхо $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 TO 'utf8';"
sudo -u postgres psql -c "ИЗМЕНИТЬ РОЛЬ $DB_USER SET default_transaction_isolation TO 'чтение зафиксировано';"
sudo -u postgres psql -c "ИЗМЕНИТЬ РОЛЬ $DB_USER УСТАНОВИТЬ часовой пояс НА 'UTC';"
sudo -u postgres psql -c "ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА БАЗУ ДАННЫХ $DB_NAME ДЛЯ $DB_USER;"
Но после запуска скрипта я не могу войти в систему с комбинацией пользователя и пароля, используя -
psql -h локальный хост -d mydb -U мой пользователь -p 5432
После ввода пароля показывает -
psql: ошибка: FATAL: ошибка аутентификации по паролю для пользователя "myuser"
FATAL: не удалось пройти аутентификацию по паролю для пользователя "mydb"
Мой файл .env выглядит так:
#WORK_ENV может быть локальным, тестовым, промежуточным или производственным.
WORK_ENV=локальный
# секретный ключ джанго
SECRET_KEY='ваш-секретный-ключ-здесь'
# база данных
DB_NAME=your_db_name
DB_USER=your_db_user_name
DB_PASSWORD=ваш_пароль_базы_данных
DB_HOST=локальный хост
DB_PORT=5432
SENTRY_DSN=ваш-уникальный-сентри-проект-ссылка