Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

836
Visualizações
¿Cómo hacer que el contenedor docker de postgres se inicialice con scram-sha-256 en cualquier conexión?

Estoy tratando de configurar POSTGRES_USER y POSTGRES_PASSWORD con una configuración de postgres de docker usando los archivos pg_hba.conf y postgresql.conf :

 docker run --name pg \ -e POSTGRES_USER=myUser \ -e POSTGRES_PASSWORD=myPassword \ -e POSTGRES_DB=myDb \ -v $PWD/pg_hba.conf:/etc/postgresql/pg_hba.conf \ -v $PWD/postgresql.conf:/etc/postgresql/postgresql.conf \ --network data-talk \ -d postgres \ -c config_file=/etc/postgresql/postgresql.conf \ -c hba_file=/etc/postgresql/pg_hba.conf
 pg_hba.conf # "local" is for Unix domain socket connections only local all all scram-sha-256 # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 host all all 172.19.0.0/16 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all scram-sha-256 host replication all 127.0.0.1/32 scram-sha-256 host replication all ::1/128 scram-sha-256
 postgresql.conf listen_addresses = '*' password_encryption = 'scram-sha-256' # md5 or scram-sha-256

Desde aquí https://hub.docker.com/_/postgres

Nota 1: la imagen de PostgreSQL configura la autenticación de trust localmente, por lo que puede notar que no se requiere una contraseña cuando se conecta desde localhost (dentro del mismo contenedor). Sin embargo, se requerirá una contraseña si se conecta desde un host/contenedor diferente.

Quiero solicitar una contraseña en cualquier/todas las conexiones, incluida la local. Al cambiar pg_hba.conf , pensé que podría cumplir con esta solicitud. Estoy usando 172.19.0.0/16 ya que esta es la subred para la red docker.

Cuando ejecuto el comando docker anterior, verifico los registros para encontrar este psql: error: could not connect to server: FATAL: password authentication failed for user “myUser” .

¿Alguna idea sobre cómo hacer que esto funcione? yo también he intentado

 docker run --name pg \ -e POSTGRES_PASSWORD=password \ -v $PWD/pg_hba.conf:/etc/postgresql/pg_hba.conf \ -v $PWD/postgresql.conf:/etc/postgresql/postgresql.conf \ --network data-talk \ -d postgres \ -c config_file=/etc/postgresql/postgresql.conf \ -c hba_file=/etc/postgresql/pg_hba.conf

que se ejecuta hasta el final, pero los errores cuando intento iniciar sesión localmente:

 $ docker exec -it pg sh psql -U postgres Password for user postgres: psql: error: could not connect to server: FATAL: password authentication failed for user "postgres"
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Siguiendo aquí https://github.com/docker-library/postgres/blob/master/12/docker-entrypoint.sh#L202 Supongo que en la primera ejecución y configuración de la base de datos, el método de autenticación es md5 , y cuando Una vez hecho esto, el archivo pg_hba.conf lo establece en scram-sha-256 , por lo que no puede autenticarse.

Al configurar POSTGRES_INITDB_ARGS y pasar los parámetros para configurar el método de autenticación inicial en scram-sha-256 la contraseña se establece con scram-sha-256 para la inicialización de la base de datos, y simplemente funciona.

 docker run --name pg \ -e POSTGRES_USER=myUser \ -e POSTGRES_PASSWORD=myPassword \ -e POSTGRES_DB=myDb \ -e POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256 --auth-local=scram-sha-256" \ -v $PWD/pg_hba.conf:/etc/postgresql/pg_hba.conf \ -v $PWD/postgresql.conf:/etc/postgresql/postgresql.conf \ --network data-talk \ -d postgres \ -c config_file=/etc/postgresql/postgresql.conf \ -c hba_file=/etc/postgresql/pg_hba.conf

POSTGRES_INITDB_ARGS

Esta variable de entorno opcional se puede usar para enviar argumentos a postgres initdb . El valor es una cadena de argumentos separados por espacios como los esperaría postgres initdb. Esto es útil para agregar funciones como sumas de verificación de páginas de datos: -e POSTGRES_INITDB_ARGS="--data-checksums"

La clave aquí está en initdb

over 4 years ago · Santiago Trujillo Relatório

0

Lo que falta es que inicialmente no hay contraseñas establecidas para los usuarios, por lo que se ha bloqueado con ese pg_hba.conf .

Debe iniciar el servidor PostgreSQL y establecer una contraseña para el superusuario de postgres . Si desea vivir de forma segura, también debe crear al menos un no superusuario que tenga una contraseña.

La forma más sencilla de hacerlo es probablemente iniciar PostgreSQL en modo de usuario único con la opción --single (consulte la documentación para obtener más detalles). Eso tiene la ventaja de que se ignora pg_hba.conf y se le conecta automáticamente como superusuario de arranque.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda