.pgpass dengan postgreSQL tidak berfungsi

13

Saya telah meletakkan file .pgpass di /folder/.pgpass dan sepertinya ini

*:*:*:postgres:password_for_postgres

Saya memiliki skrip bash tempat saya membuat cadangan basis data dari postgreSQL:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

Namun, skrip masih menjanjikan saya untuk kata sandi. PGPASSFILE memiliki nilai sebagaimana mestinya, sejauh yang saya bisa lihat. Adakah petunjuk tentang apa masalahnya?

/ K

Kerstin Viltersten
sumber

Jawaban:

8

Apakah file pgpass diatur ke mode 0600 (yaitu hanya baca / tulis oleh pemilik)? Pustaka klien akan mengabaikannya jika dapat dibaca kelompok atau dunia.

araqnid
sumber
5

Pada konfigurasi saya ( Ubuntu 10.04.3dan PostgreSQL 8.4), saya akhirnya bisa berfungsi ketika nama pengguna saya login sama dengan yang saya coba dapatkan kata sandi dari .pgpassfile untuk.

Masuk sebagai deployer, saya mencoba menggunakan .pgpassfile untuk mengakses database yang dimiliki oleh nama pengguna appname, yang tidak memiliki padanan pengguna Unix. Saya tidak bisa melakukan .pgpasspekerjaan, sampai saya mulai menggunakan deployersebagai pengguna untuk mengakses database saya ...

Ini /home/deployer/.pgpasskonten file saya :

*:*:*:deployer:password

Berikut bagian dari yang ini /etc/postgresql/8.4/main/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

Seperti yang Anda lihat, semua koneksi saya memerlukan kata sandi ( md5).

Dengan konfigurasi ini, anggap saya memiliki database yang saya buat dengan perintah ini:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

Saya dapat melakukan operasi berikut tanpa memasukkan kata sandi:

deployer@ubuntu-server:~$ dropdb dbname

Segera setelah saya mengubah nama saya .pgpassmenjadi .pgpass-no, itu akan memerlukan kata sandi.

BTW, jangan lupa bahwa .pgpassfile Anda harus di bawah 0600izin:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
Romain Champourlier
sumber
2
Anda dapat mengontrol pengguna pg untuk terhubung menggunakan -Ubendera ke dropdbdancreatedb
Kevin Horn
0

1) Buat file .pgpass dengan konten

host: 5432: somedb: someuser: somepass

2) mengatur izin menggunakan perintah

sudo chmod 600 .pgpass

3) Tetapkan pemilik file sebagai pengguna yang sama dengan yang Anda gunakan untuk masuk:

sudo chown login_username: login_username .pgpass

4) Setel variabel lingkungan PGPASSFILE:

export PGPASSFILE = '/ home / user / .pgpass'

Sekarang periksa dengan menghubungkan ke database:

psql -h host -U someuser somedb

Saya tidak akan meminta kata sandi dan masuk ke postgresql.

Shrinivas
sumber