¿La aplicación de psql no funciona correctamente? (Utilizando el contenedor de Postgres Alpine en Docker)
Quiero crear un comando para otorgar a un usuario en un contenedor de ejecución de Postgresql ciertos privilegios desde la línea de comandos, sin tener que acceder manualmente a psql dentro del contenedor.
Para hacer esto, puedes utilizar los comandos de la aplicación, aquí está la documentación: https://www.postgresql.org/docs/8.1/app-psql.html
(Ya he utilizado otros comandos de la aplicación con éxito, por ejemplo, para crear bases de datos con “docker exec -it samplePostgres createdb –username=root –owner=root –encoding=UTF8 sampleDB”)
Sin embargo, al usar:
docker exec -it samplePSQL psql -d sampleDB -c GRANT SELECT, INSERT, UPDATE ON table TO user;
Se muestra el siguiente resultado:
jj
psql: advertencia: se ignoró el argumento adicional de línea de comandos “INSERT,”
psql: advertencia: se ignoró el argumento adicional de línea de comandos “UPDATE”
psql: advertencia: se ignoró el argumento adicional de línea de comandos “ON”
psql: advertencia: se ignoró el argumento adicional de línea de comandos “table”
psql: advertencia: se ignoró el argumento adicional de línea de comandos “TO”
psql: advertencia: se ignoró el argumento adicional de línea de comandos “user”
psql: error: falló la conexión al servidor en el socket “/var/run/postgresql/.s.PGSQL.5432”:
FATAL: el rol “SELECT,” no existe
¿Considera de alguna manera que “SELECT” es el usuario??
Por supuesto, correrlo desde psql dentro del contenedor funciona normalmente.
sampleDB=# GRANT SELECT, INSERT, UPDATE ON table TO user;
GRANT
davy.ai
Para otorgarle a un usuario en un contenedor en ejecución de Postgresql ciertos privilegios desde la línea de comandos sin acceder manualmente a psql dentro del contenedor, use el siguiente comando:
El problema con el comando anterior era que los argumentos no estaban correctamente encerrados entre comillas. Esto hacía que psql interpretara “SELECT” como el nombre de un rol, en lugar de un comando. Al rodear todo el comando con comillas, los argumentos se analizan y ejecutan correctamente.