Thứ nhất, điều quan trọng cần hiểu là đối với hầu hết các bản phân phối Unix, người dùng Postgres mặc định không yêu cầu hay sử dụng mật khẩu để xác thực. Thay vào đó, tùy thuộc vào cách Postgres được cài đặt ban đầu và phiên bản bạn đang sử dụng, phương thức xác thực mặc định sẽ là ident
hoặc peer
.
ident
xác thực sử dụng máy chủ nhận dạng của hệ điều hành đang chạy ở cổng TCP 113 để xác minh thông tin đăng nhập của người dùng.
peer
mặt khác, xác thực được sử dụng cho các kết nối cục bộ và xác minh rằng tên người dùng đã đăng nhập của hệ điều hành khớp với tên người dùng cho cơ sở dữ liệu Postgres.
Đăng nhập và kết nối với tư cách người dùng mặc định
Đối với hầu hết các hệ thống, người dùng Postgres mặc định là postgres
và mật khẩu không cần thiết để xác thực. Do đó, để thêm mật khẩu, trước tiên chúng ta phải đăng nhập và kết nối với tư cách là postgres
người dùng.
$ sudo -u postgres psql
Nếu bạn đã kết nối thành công và đang xem psql
nhắc, hãy chuyển xuống phần Thay đổi mật khẩu phần.
Nếu bạn gặp lỗi cho biết cơ sở dữ liệu “postgres” không tồn tại, hãy thử kết nối với template1
cơ sở dữ liệu thay thế và nếu thành công, hãy tiếp tục Thay đổi mật khẩu .
$ sudo -u postgres psql template1
Lỗi xác thực
Nếu bạn gặp lỗi xác thực khi cố gắng kết nối với psql
khách hàng, bạn có thể cần phải thay đổi tệp cấu hình xác thực Postgres (pg_hfa.conf).
Mở tệp cấu hình, thường nằm tại /etc/postgresql/#.#/main/pg_hba.conf
, trong đó #.#
là phiên bản Postgres bạn đang sử dụng:
$ sudo nano /etc/postgresql/9.3/main/pg_hba.conf
Tệp cấu hình xác thực là một danh sách các quy tắc xác thực. Cuộn xuống tệp cho đến khi bạn tìm thấy dòng đầu tiên hiển thị postgres
người dùng trong cột thứ ba (nếu dòng như vậy tồn tại). Bỏ ghi chú dòng nếu cần (bỏ dấu chấm phẩy), hoặc nếu thiếu hoàn toàn dòng, hãy thêm dòng sau vào đầu tệp và lưu các thay đổi của bạn:
local all postgres peer
Quy tắc xác thực này chỉ cho Postgres biết rằng đối với các kết nối cục bộ được thiết lập cho tất cả cơ sở dữ liệu cho người dùng postgres
, xác thực bằng peer
giao thức.
Lưu ý:Một số phiên bản cũ hơn của Postgres thích phương pháp xác thực danh tính mặc định, nhưng hầu hết các cài đặt hiện đại sẽ sử dụng tính năng ngang hàng như được chỉ định ở trên. Bạn có thể cần phải kiểm tra cả hai nếu kết quả của bạn khác nhau.
Bây giờ với tệp cấu hình của bạn đã được cập nhật, hãy lặp lại các bước trong phần Đăng nhập và kết nối với tư cách người dùng mặc định phần để cố gắng kết nối làm postgres
mặc định người dùng. Sau khi thành công, hãy tiến hành thay đổi mật khẩu.
Thay đổi mật khẩu
Với kết nối hiện đã được thiết lập với Postgres tại psql
nhắc, phát hành ALTER USER
lệnh thay đổi mật khẩu cho postgres
người dùng:
postgres=# ALTER USER postgres PASSWORD 'myPassword';
ALTER ROLE
Nếu thành công, Postgres sẽ xuất ra thông báo xác nhận về ALTER ROLE
như đã thấy ở trên.
Cuối cùng, thoát khỏi psql
bằng cách sử dụng \q
lệnh.
postgres=# \q
Bạn đã hoàn tất. postgres
mặc định người dùng hiện có một mật khẩu được liên kết với tài khoản để sử dụng trong các ứng dụng khác của bạn.