Trên cấu hình của tôi ( Ubuntu 10.04.3
và 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ừ .pgpass
tệp.
Đăng nhập như là deployer
, tôi đã cố gắng sử dụng .pgpass
tệ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 .pgpass
công việc, cho đến khi tôi bắt đầu sử dụng deployer
vớ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/.pgpass
nộ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.conf
mộ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 .pgpass
thành .pgpass-no
, nó sẽ yêu cầu mật khẩu.
BTW, đừng quên rằng .pgpass
tệp của bạn phải được cấp 0600
phép:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-U
cờ đếndropdb
vàcreatedb