2012-07-11 29 views
19

Làm cách nào tôi có thể thiết lập nhiều phương pháp xác thực cho cùng một quy tắc lưu trữ/cơ sở dữ liệu/người dùng? Tôi muốn có thể đăng nhập vào người dùng postgres của mình bằng cách sử dụng cả hai sudo -u postgres psql -U postgres (mà không phải nhập mật khẩu PostgreSQL) và psql -U postgres --password. Nội dung như sau trong pg_hba.conf:Phương thức xác thực nhiều PostgreSQL

local all    postgres      md5 
local all    postgres      peer 

Tôi chỉ có thể nhận một phương pháp hoặc phương thức khác cùng một lúc.

Cảm ơn.

(Tôi đang sử dụng PostgreSQL 9.1).

Trả lời

21

Không. Chỉ hỗ trợ một phương thức xác thực cho bất kỳ cấu hình cụ thể nào.

Tôi rất thích nếu Pg có thể hỗ trợ xác thực lùi, trong trường hợp nếu kiểm tra nhận dạng không thành công, nó cho phép md5 auth thay thế. Nó không hỗ trợ điều này vào lúc này, mặc dù, và tôi nghi ngờ (tôi đã không xác minh) rằng một sự thay đổi giao thức sẽ được yêu cầu để hỗ trợ nó.

Điều bạn có thể làm là lưu trữ mật khẩu trong một tệp $HOME/.pgpass cho người dùng hệ thống postgres. Cung cấp cho nó chế độ 0600 để nó chỉ có thể đọc được bởi người dùng postgres và bởi root, cả hai đều có thể truy cập trực tiếp vào tệp và cấu hình cơ sở dữ liệu. Bằng cách đó, bạn sẽ có được quản trị viên dễ dàng md5 auth. Trên một số hệ thống, bạn có thể phải đặt và tạo thư mục chính cho người dùng postgres trước khi bạn có thể thực hiện việc này. Xem getent passwd postgres để xem liệu người dùng postgres có một homedir không và nếu có, thì ở đâu.

(UPDATE: sử dụng để đọc $HOME/.psqlrc - đó là hữu ích, nhưng .pgpass là thích hợp cho việc lưu trữ mật khẩu)

+0

Xem http://www.postgresql.org/docs/9.5/static/libpq-pgpass. html để biết chi tiết –

Các vấn đề liên quan