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?


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.


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';"

WITH, not SET (15 caracteres)
ChocoDeveloper
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.