Cómo configurar la contraseña de usuario postgresql en script bash

12

Quiero establecer una contraseña para el usuario del servidor PostgreSQL por defecto, postgres. Lo hice usando:

sudo -u postgres psql
# \password postgres

Quiero hacer este paso en muchas máquinas, por lo que me gustaría crear un bashscript para hacer lo mismo. ¿Cómo lograr esto en bash?

saji89
fuente
Votó la pregunta: muchas preguntas sobre la falla del servidor se pueden aprender de la documentación, libros, sitios web ... La persona que lo votó no le enseñará a usar el mancomando. Asegúrese de intentarlo man psqlen el futuro.

Respuestas:

9

Según lo documentado , puede ejecutar metacomandos a través de la --commandopción.

sudo -u postgres psql --command '\password postgres'

Las comillas simples aseguran que el shell no trate la barra invertida como un carácter de escape.

Ansgar Wiechers
fuente
Gracias, acabo de hacer lo mismo, pero con una pequeña diferencia: sudo -u postgres psql --command "\password". Preguntándome por qué mi pregunta fue rechazada.
saji89
@ saji89: No es mi voto negativo, pero supongo que esto se puede aprender fácilmente leyendo la documentación.
Sven
@ saji89 Cuando usa comillas dobles, el shell trata la barra invertida como un carácter de escape, es decir, como una instrucción para tratar el siguiente carácter como un carácter literal en lugar de un carácter especial. Para obtener una barra invertida literal dentro de dobles qoutes, debe usar "\\...".
Ansgar Wiechers el
@AnsgarWiechers, gracias por esa corrección. Pero la parte divertida es que esa línea está funcionando para mí. Por lo que leí en gnu.org/software/bash/manual/html_node/Double-Quotes.html Dice: The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline.Creo que es por eso que "\password"funcionó bien.
saji89
22

En lugar de usar el \passwordcomando psql , que espera un terminal interactivo, puede usar:

ALTER USER postgres WITH PASSWORD 'newpassword';

Diga, a través de un psql -ccomando:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpassword';"
Craig Ringer
fuente
WITH, not SET (15 caracteres)
ChocoDeveloper