Trên cấu hình của tôi ( Ubuntu 10.04.3và PostgreSQL 8.4), cuối cùng tôi cũng có thể làm cho nó hoạt động khi tên người dùng tôi đăng nhập giống như tên tôi đang cố lấy mật khẩu từ .pgpasstệp.
Đăng nhập như là deployer, tôi đã cố gắng sử dụng .pgpasstệp để truy cập cơ sở dữ liệu thuộc sở hữu của một tên người dùng appname, không có người dùng Unix tương đương. Tôi không thể thực hiện .pgpasscông việc, cho đến khi tôi bắt đầu sử dụng deployervới tư cách là người dùng để truy cập cơ sở dữ liệu của mình ...
Đây là /home/deployer/.pgpassnội dung tập tin của tôi :
*:*:*:deployer:password
Đây là một phần của /etc/postgresql/8.4/main/pg_hba.confmột:
# 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
Như bạn có thể thấy, tất cả các kết nối của tôi yêu cầu mật khẩu ( md5).
Với cấu hình này, giả sử tôi có một cơ sở dữ liệu tôi đã tạo bằng lệnh này:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Tôi có thể thực hiện thao tác sau mà không cần nhập mật khẩu:
deployer@ubuntu-server:~$ dropdb dbname
Ngay khi tôi đổi tên của mình .pgpassthành .pgpass-no, nó sẽ yêu cầu mật khẩu.
BTW, đừng quên rằng .pgpasstệp của bạn phải được cấp 0600phép:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-Ucờ đếndropdbvàcreatedb