Suite au tutoriel ici: http://www.unixmen.com/install-postgresql-9-4-phppgadmin-ubuntu-14-10/
Je suis en train d'écrire l'installation de PostgreSQL dans bash, mais j'ai un problème pour définir le mot de passe utilisateur initial.
Après le tutoriel pour cette partie nous avons:
# Login to postgresql Prompt:
Sudo -u postgres psql postgres
# .. and set postgres password with following command:
postgres=# \password postgres
Enter new password:
Enter it again:
postgres=# \q
Ce qui est génial, mais je veux définir ce mot de passe à partir du script Bash et une façon dont ce type de tâche pourrait généralement utiliser Expect:
# Build the command into a variable so that we can run it later
PSQL_QUERY=$(expect -c "
set timeout 10
spawn -u postgres psql postgres -c '\\\password postgres'
expect \"Enter new password:\"
send \"password\r\"
expect \"Enter it again:\"
send \"password\r\"
expect eof
");
# Run the command with automated entry
echo "$PSQL_QUERY";
Mais lorsque j'essaie d'exécuter le script, la sortie est la suivante:
root@node:/home/user# ./test.sh
send: spawn id exp6 not open
while executing
"send "password\r""
spawn Sudo -u postgres psql postgres -c '\password postgres'
psql: FATAL: Peer authentication failed for user "postgres'"
Ce que je ne comprends pas vraiment à la fois parce que je suis nouveau dans PostgreSQL et parce que quand j’exécute ce qui suit:
root@node:/home/user# Sudo -u postgres psql postgres -c '\password postgres'
Enter new password: <password>
Enter it again: <password>
Ça marche. Est-ce que quelqu'un pourrait m'aider à comprendre où je me trompe et comment je pourrais le faire correctement afin de pouvoir définir le nouveau mot de passe utilisateur "postgres" à partir d'un script bash. Merci d'avance!
Beaucoup plus facile:
Sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{password}';"
Documentation sur psql
(terminal interactif PostgreSQL).