Vấn đề vẫn là pg_hba.conf
của bạn tệp *.
Dòng này:
local all postgres peer
Nên là:
local all postgres md5
* Vị trí của tệp này không nhất quán. Lệnh
locate pg_hba.conf
nên giúp; đây là một số ví dụ:/etc/postgresql/*/main/pg_hba.conf
và/var/lib/pgsql/data/pg_hba.conf
.
Sau khi thay đổi tệp này, đừng quên khởi động lại máy chủ PostgreSQL của bạn. Nếu bạn đang sử dụng Linux, đó sẽ là sudo service postgresql restart
.
Đây là những mô tả ngắn gọn về cả hai tùy chọn theo tài liệu PostgreSQL chính thức về phương pháp xác thực.
Xác thực ngang hàng
Phương thức xác thực ngang hàng hoạt động bằng cách lấy tên người dùng hệ thống điều hành của máy khách từ hạt nhân và sử dụng nó làm tên người dùng cơ sở dữ liệu được phép (với ánh xạ tên người dùng tùy chọn). Phương pháp này chỉ được hỗ trợ trên các kết nối cục bộ.
Xác thực mật khẩu
Các phương pháp xác thực dựa trên mật khẩu là md5 và mật khẩu. Các thao tác này hoạt động tương tự ngoại trừ cách mật khẩu được gửi qua kết nối, cụ thể là MD5 được băm và clear-text tương ứng.
Nếu bạn lo lắng về các cuộc tấn công "đánh hơi" mật khẩu thì md5 được ưu tiên hơn. Nên tránh sử dụng mật khẩu thuần túy nếu có thể, tuy nhiên, không thể sử dụng md5 với tính năng db_user_namespace. Nếu kết nối được bảo vệ bằng mã hóa SSL thì mật khẩu có thể được sử dụng một cách an toàn (mặc dù xác thực chứng chỉ SSL có thể là lựa chọn tốt hơn nếu tùy thuộc vào việc sử dụng SSL).
Vị trí mẫu cho pg_hba.conf
:
/etc/postgresql/9.1/main/pg_hba.conf