Sau khi tôi cài đặt PostgreSQL 9.1 trên Ubuntu 12.04, tôi đặt mật khẩu cho tài khoản superuser "postgres". Tôi muốn tất cả người dùng phải nhập mật khẩu của họ khi đăng nhập. Đây là lý do tại sao tôi đã định cấu hình pg_hba.conf như sau:Không có nhắc mật khẩu cho postgresql superuser
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
Tôi khởi động lại postgresql sau khi thực hiện những thay đổi đó. Khi tôi làm điều này psql -U testuser
Tôi được yêu cầu nhập mật khẩu, nhưng khi tôi đăng nhập bằng tài khoản "postgres" như vậy psql -U postgres
Tôi không nhận được lời nhắc mật khẩu và đã đăng nhập. Nếu tôi buộc lời nhắc mật khẩu với psql -U postgres -W
Tôi có thể đăng nhập bằng nhập mật khẩu chính xác hoặc không nhập gì cả. Nhập sai mật khẩu bị từ chối.
Ai cũng có thể giải thích cho tôi biết tại sao điều này xảy ra?
Trên ghi chú liên quan: Tôi thấy rất nhiều ví dụ khi mọi người sử dụng nhận dạng làm phương thức xác thực cho người dùng "postgres", cho rằng để trở thành người dùng "postgres" cần mật khẩu gốc của máy. Tôi cho rằng lý do là nếu một kẻ tấn công được quyền truy cập root, anyways thực hiện của bạn. Mặc dù vậy, tôi muốn đăng nhập bằng mật khẩu, mật khẩu không giống với mật khẩu gốc. Tôi prefere có mật khẩu khác nhau cho những thứ khác nhau. Điều này có hợp lý không?
Sản lượng grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
Đó là tệp .pgpass, cảm ơn! Một phần của tệp pg_hba.conf mà bạn trích dẫn đã gây nhầm lẫn cho tôi một chút. Tôi có thể làm gì để cung cấp truy cập không tương tác mà không cho phép đăng nhập mà không cần mật khẩu? – Basil
Xác thực ngang hàng nên được tìm kiếm cho điều này, giả sử bạn không cho phép mọi người đăng nhập vào máy chủ theo tài khoản postgres. – Andrew
Tôi đã lưu ý hành vi tương tự trong Windows. Sau khi thêm các kết nối mới trong PgAdminIII, tôi không còn được nhắc nhở về mật khẩu bởi psql khi kết nối với postgres. Thủ phạm là pgpass.conf, được tạo tự động bởi PgAdminIII trong thư mục% APPDATA% \ postgresql. Cảm ơn Daniel. –