2016-07-29 2 views
-1

Ich habe eine Anwendung, die eine Postgres-Datenbank erstellt und der Benutzer, der die Postgres-Datenbank besitzt, hat/bin/nologin als ihre Shell.postgres Benutzer mit/bin/nologin

Die Datenbank funktioniert ohne Fehler und ist auch sonst sicher. Aufgrund von Best Practices ist es sinnvoll, dem postgres db-Besitzer keine Linux-Shell zuzuweisen, sondern postgres läuft als dieser Benutzer.

Ich muss jedoch eine pg_dump dieser Datenbank zu Archivierungszwecken nehmen, wie kann ich das tun, ohne dem Benutzernamen, mit dem die Datenbank läuft, eine gültige Shell zuzuweisen?

+1

'pg_dump -U some_db_user ...' von überall können Sie eine Verbindung zur Datenbank –

Antwort

0
sudo -u pe-postgres /opt/puppetlabs/server/apps/postgresql/bin/pg_dumpall -c -f <BACKUP_FILE>.sql 

funktioniert der Trick

0

Das ist überhaupt kein Problem.

pg_dump ist ein Client-Tool, und Sie können es als einen anderen Benutzer auf demselben Computer oder von einem anderen Computer verwenden.

Verwenden Sie die -h <host/socket> -p <port> Optionen von pg_dump, um eine Verbindung mit einem Datenbankserver herzustellen, der sich möglicherweise auf einem anderen Computer befindet, und -U <user> anzugeben, mit welchem ​​Datenbankbenutzer eine Verbindung hergestellt werden soll.

+0

immer diese Nachricht – a3kartik

+0

[root @ test56 ~] #/opt/Puppet Labs/Server/bin/pg_dump -U pe-puppetdb -d pe-puppetdb> /var/tmp/db.$ (Datum +% Y-% m-% d% H:% M:% S) .dump pg_dump: [archiver (db)] Verbindung zur Datenbank "pe-puppetdb" fehlgeschlagen: FATAL: Peer-Authentifizierung fehlgeschlagen für Benutzer "pe-puppetdb" – a3kartik

+0

Sofern nicht mit einer 'Karte' konfiguriert, [Peer-Authentifizierung] (https://www.postgresql.org/docs/ current/static/auth-methods.html #AUTH-PEER) funktioniert nur, wenn Sie OS-Benutzer 'pe-puppetdb' sind. Sie müssen ['pg_hba.conf'] (https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html) konfigurieren, um den Verbindungsversuch zuzulassen. –