postgreSQL ile .pgpass çalışmıyor


13

/Folder/.pgpass dosyasına bir .pgpass dosyası ekledim ve şöyle görünüyor

*:*:*:postgres:password_for_postgres

Ben postgreSQL veritabanını yedekleme bir bash betiği var:

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

Ancak, komut dosyası beni hala parola için teşvik ediyor. PGPASSFILE, görebildiğim kadarıyla olması gereken değere sahip. Sorunun ne olabileceğine dair ipuçları var mı?

/ K

Yanıtlar:


8

Pgpass dosyası 0600 moduna ayarlandı mı (yani yalnızca sahibi tarafından okuma / yazma)? İstemci kitaplığı, grup veya dünya tarafından okunabilirse yok sayar.


5

Konfigürasyonumda ( Ubuntu 10.04.3ve PostgreSQL 8.4), giriş yaptığım kullanıcı adı için .pgpassdosyadan bir şifre almaya çalıştığımla aynı olduğunda işe yarayabilirim .

Olarak giriş deployer, Unix kullanıcı eşdeğeri olmayan .pgpassbir kullanıcı adına ait veritabanına erişmek için dosyayı kullanmaya çalışıyordu appname. Veritabanıma erişmek için kullanıcı olarak .pgpasskullanmaya başlayana kadar işi yapamadım deployer...

İşte /home/deployer/.pgpassdosya içeriğim:

*:*:*:deployer:password

İşte bir parçası /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 

Gördüğünüz gibi, tüm bağlantılarım şifre ( md5) gerektiriyor .

Bu yapılandırma ile, bu komutla oluşturduğum bir veritabanına sahip olduğumu varsayarsak:

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

Bir şifre girmeden aşağıdaki işlemi gerçekleştirebiliyorum:

deployer@ubuntu-server:~$ dropdb dbname

En kısa zamanda benim adını değiştirmek olarak .pgpassiçin .pgpass-no, bir parola sorar.

BTW, .pgpassdosyanızın 0600izinler altında olması gerektiğini unutmayın :

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
Pg kullanıcısını -Ubayrağı kullanarak bağlanmak üzere kontrol edebilirsiniz dropdbvecreatedb
Kevin Horn

0

1) İçerikli .pgpass dosyası oluşturun

konak: 5432: somedb: someuser: somepass

2) komutunu kullanarak izinleri ayarlayın

sudo chmod 600 .pgpass

3) Dosya sahibini, oturum açtığınız kullanıcıyla aynı kullanıcı olarak ayarlayın:

sudo chown login_username: login_username .pgpass

4) PGPASSFILE ortam değişkenini ayarlayın:

dışa aktar PGPASSFILE = '/ home / user / .pgpass'

Şimdi veritabanına bağlanarak kontrol edin:

psql -h ana bilgisayar -U bazı kullanıcı somedb

Şifre istemeyeceğim ve postgresql'de oturum açmayacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.