Lỗi xác thực không thành công xảy ra khi bạn cố gắng đăng nhập vào người dùng PostgreSQL của mình nhưng xác thực không thành công vì theo mặc định psql
kết nối qua socket UNIX sử dụng peer
xác thực thay vì xác thực mật khẩu.
Trong bài viết này, chúng ta sẽ tìm hiểu cách loại bỏ FATAL: Peer authentication failed for user với lỗi “postgres” của người dùng bằng cách thực thi xác thực mật khẩu qua phương thức ngang hàng của socket Unix,
Đầu tiên, điều hướng đến thư mục /etc/postgresql/10/main
.
cd /etc/postgresql/10/main
Lưu ý rằng 10
là phiên bản PostgreSQL, nó có thể khác đối với bạn.
Đây là tệp pg_hba.conf
mà chúng ta cần thực hiện một số thay đổi ở đây, bạn có thể cần quyền truy cập sudo
cho tệp này.
sudo nano pg_hba.conf
Cuộn xuống tệp cho đến khi bạn tìm thấy cái này –
# Database administrative login by Unix domain socket local all postgres peer
Ở đây thay đổi ngang hàng thành md5 như sau.
# Database administrative login by Unix domain socket local all postgres md5
peer
có nghĩa là nó sẽ tin tưởng tính xác thực của người dùng UNIX do đó không nhắc nhập mật khẩu.md5
có nghĩa là nó sẽ luôn yêu cầu mật khẩu và xác thực nó sau khi băm vớiMD5
.
Bây giờ lưu tệp và khởi động lại máy chủ Postgres.
sudo service postgresql restart
Và đó là nó!
Hãy thử đăng nhập ngay bây giờ.
sudo -u postgres psql Password: postgres=#