bash - example - postgresql:.pgpass no funciona
pgpass windows (5)
He creado un archivo .pgpass en mi directorio de inicio que tiene este aspecto
localhost:5432:somedb:someuser:somepass
Estoy usando un script de shell que crea un directorio y coloca un pg_dump de somedb allí:
mkdir directory
pg_dump somedb > directory/somefile.dump
Todavía pide la contraseña.
¿Dónde está el error aquí?
¿Intentaste especificar el host y el usuario?
pg_dump -U someuser -h localhost somedb > directory/somefile.dump
1) Crear un archivo .pgpass con contenido
anfitrión: 5432: somedb: someuser: somepass
2) establecer los permisos utilizando el comando
sudo chmod 600 .pgpass
3) Establezca el propietario del archivo como el mismo usuario con el que inició sesión:
sudo chown login_username: login_username .pgpass
4) Establecer la variable de entorno PGPASSFILE:
exportar PGPASSFILE = ''/ home / user / .pgpass''
Ahora compruebe conectándose a la base de datos:
psql -h host -U someuser somedb
No solicitará la contraseña y se conectará a postgresql.
Aunque la pregunta ya ha sido respondida y aceptada, también puede ocurrir que los permisos en el archivo .pgpass no estén configurados correctamente. Tiene que tener prohibido el acceso al mundo y al grupo:
/bin/chmod 0600 ~/.pgpass
Compruebe el propietario del archivo .pgpass. Solo perdí media hora para descubrir que había creado mi archivo .pgpass con sudo. El comando para mi usuario y ubicación era chown postgres:postgres /var/lib/pgsql/.pgpass .
psql ( startup.c ) llama a PQconnectdbParams ( fe-connect.c ), y luego se llama a passwordFromFile . Aquí hay una lista de verificación para asegurarse de que se utilizará el archivo pgpass:
- Asegúrese de que las banderas
--password/-Wypassword=en la cadena de conexión estén desactivadas. De lo contrario, el archivo pgpass no se utilizará. - Asegúrese de que la variable de entorno
PGPASSWORDesté establecida (echo $PGPASSWORD). De lo contrario, el archivo pgpass no se utilizará. - Asegúrese de que el archivo pgpass esté en la ubicación correcta (
$PGPASSFILEo predeterminado~/.pgpasso%APPDATA%/postgresql/pgpass.conf) - Asegúrese de que el archivo de acceso no sea legible, grabable o ejecutable por grupo u otro (por ejemplo,
chmod 600 ~/.pgpass); De lo contrario,psqlimprimirá una advertencia. - Asegúrese de que el archivo de acceso sea un archivo (no un enlace simbólico); De lo contrario,
psqlimprimirá una advertencia. - Asegúrese de que el archivo de acceso sea legible por el usuario de
psql(por ejemplo,cat ~/.pgpass); De lo contrario,psqllo ignorará sin previo aviso. Asegúrese de que sea propiedad del usuario y de que todos los directorios de sus antepasados sean ejecutables por el usuario. - Asegúrese de que el nombre de host, el puerto, el dbname, el nombre de usuario de la línea en el archivo pgpass coincidan con el servidor o estén
*. La "pwhost" del servidor que está marcada es el nombre delhostsi no está vacío, o la dirección IP dehostaddr. De lo contrario, el archivo será ignorado sin previo aviso.
Desafortunadamente, no hay registro dentro de estos archivos, por lo que si esto no ayuda, entonces es posible que necesite compilar psql y libpq usted mismo y ejecutarlo en un depurador.