xóa yêu cầu mật khẩu cho người dùng postgres


46

Tôi hiểu rằng, khi cài đặt, PostgreSQL không có mật khẩu cho người dùng root db (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... và người ta khuyên nên đặt nó với:

alter role postgres password '<<very-secret>>';

(và sau đó cập nhật pg_hba.conftệp cho phù hợp)

Câu hỏi của tôi là: SQL sẽ sử dụng cái gì để trở lại tình huống trước đó khi không cần mật khẩu cho người dùng postgres.

Nói chung, làm thế nào tôi có thể loại bỏ yêu cầu mật khẩu cho bất kỳ vai trò nào? Tôi không hỏi làm thế nào để thay đổi mật khẩu mà là làm thế nào để loại bỏ yêu cầu mật khẩu ( passwdcột null trong bảng pg_shadow).

Câu trả lời:


55

Việc mật khẩu có bắt buộc hay không không liên quan gì pg_shadowvà liệu mật khẩu có thực sự được xác định cho người dùng hay không. Vâng, tôi biết, đó là lạ.

pg_hba.confkiểm soát phương thức xác thực. Nếu bạn muốn yêu cầu mật khẩu, hãy sử dụng md5xác thực. Nếu bạn muốn cho phép đăng nhập mà không có mật khẩu cho bất cứ ai, hãy sử dụng trust. Nếu bạn muốn yêu cầu cùng tên người dùng trong hệ điều hành như trong PostgreSQL, hãy sử dụng peer(UNIX, chỉ cho các kết nối cục bộ) hoặc sspi(Windows).

Nếu có mật khẩu được đặt, nhưng pg_hba.confkhông báo cho PostgreSQL yêu cầu, mật khẩu sẽ bị bỏ qua.

Nếu pg_hba.confyêu cầu PostgreSQL hỏi mật khẩu nhưng không có mật khẩu nào, thì tất cả các lần thử đăng nhập sẽ thất bại cho dù mật khẩu nào được cung cấp.


12

Người dùng postgres theo mặc định không có mật khẩu. Để xóa mật khẩu người dùng (trong trường hợp này đối với người dùng / vai trò của postgres):

alter role postgres password null;

Chúng tôi cũng cần phải xác thực thiết lập để trustpg_hba.conf- xem chi tiết [ https://dba.stackexchange.com/a/19657/52550]


3
bây giờ tôi không thể truy cập vào psql
Roberth Solís

3
Vâng, bây giờ tôi đã yêu cầu mật khẩu và không thể đăng nhập ...
Amalgovinus

1
lệnh này cấm tôi từ postgres - giống như @Amalgovinus đã nói.
Nam G VU

1
Nếu bạn không thể truy cập do lỗi psql: fe_sendauth: no password supplied, thì hãy chỉnh sửa C:\Program Files\PostgreSQL\10\data\pg_hba.confvà thay thế md5bằng trustbên 127.0.0.1/32dưới IPv4 local connectionsvà bên ::1/128dướiIPv6 local connections
Marco Lackovic

1

Điều này làm việc cho tôi:

alter role postgres password '';


4
Khi tôi thực hiện việc này trong postgres 10, tôi gặp lỗi "THÔNG BÁO: chuỗi trống không phải là mật khẩu hợp lệ, xóa mật khẩu". Nhưng sau đó nó sẽ thay đổi mật khẩu của tôi và tôi không thể đăng nhập bằng bất cứ thứ gì! WTF !!
Amalgovinus

@Amalgovinus xem bình luận của tôi để trả lời lalligood
Marco Lackovic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.