Рейтинг:0

Настройка БД PostgreSQL с помощью сценария bash с использованием переменных из файла .env

флаг ca

Я пытаюсь настроить 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=ваш-уникальный-сентри-проект-ссылка

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.