Создавать нового пользователя postgres программно, без интерактивного вмешательства
Я пытаюсь сделать это в script:
» sudo -u postgres createuser -PE -s user1
Enter password for new role:
Я не хочу, чтобы postgres
запрашивал пароль в интерактивном режиме, поэтому я хочу:
» sudo -u postgres createuser -PE -s user1 < /tmp/xxx
Где /tmp/xxx
содержит пароль для нового пользователя. Но это не работает. Любая идея, как это сделать?
Ответы
Ответ 1
Вы можете сделать это, используя простой SQL после подключения в качестве суперпользователя (например, postgres
) к соответствующей базе данных:
create user user1 password 'foobar'
Если вам нужно сделать это из script, вы можете поместить его в файл sql, а затем передать это в psql:
» sudo -u postgres psql --file=create_user.sql
Ответ 2
Из оболочки вы можете использовать здесь-документ, например:
#!/bin/sh
psql -U postgres postgres <<OMG
CREATE USER lutser password '`cat /tmp/xxx`' ;
OMG
Кстати: я не думаю, что хранить пароль в /tmp/
не рекомендуется, даже временно.