Xác thực mật khẩu Postgres không thành công


36

Tôi đã cài đặt PostgreSQL 9.1 và pgadmin3 trên Ubuntu Server 13.10.

Tôi đã cấu hình postgresql.conf với: listen_addresses = '*'

tôi cũng đã cấu hình ph_hba.conf bằng cách thay đổi kết nối ngang hàng thành md5

Thêm vào đó tôi đặt lại mật khẩu của postgres bằng cách: sudo password postgres

sau đó khởi động lại dịch vụ với sudo /etc/init.d/postgresql restart

sau đó tôi đã cố gắng kết nối với cơ sở dữ liệu mẫu PostgreSQL mặc định:

sudo -u postgres psql template1

nhưng đăng nhập thất bại với thông báo lỗi này:

psql: FATAL:  password authentication failed for user "postgres"

sau đó tôi đã cố gắng đăng nhập từ pgadmin, điều này cũng gây ra lỗi tương tự.

Tôi đã đọc ở đây rằng nó có thể là một ngày hết hạn mật khẩu lỗi Người dùng PostgreSQL không thể kết nối với máy chủ sau khi thay đổi mật khẩu

nhưng tôi không thể giải quyết nó vì tôi không thể đăng nhập bằng psql. Có ai bây giờ làm thế nào để giải quyết vấn đề này?

CHỈNH SỬA

tập tin ph_hba:

đây

Ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


6
Tôi khá khó chịu bởi thực tế là bạn đã nhân bản bài đăng này. Tôi vừa viết một câu trả lời cho điều này, chỉ để phát hiện ra rằng bạn cũng đã đăng một câu hỏi giống hệt với stackoverflow.com đã có câu trả lời được chấp nhận. Không sao chép và dán câu trả lời giữa các trang web, bạn đang lãng phí thời gian của mọi người và khiến việc tìm kiếm thông tin trở nên khó khăn hơn. Nếu bạn khăng khăng làm điều này, hãy tạo liên kết giữa chúng.
Craig Ringer

Câu trả lời:


66

Bạn đang nhầm lẫn mật khẩu cho "postgres" của người dùng unix với mật khẩu cơ sở dữ liệu cho "postgres" của người dùng cơ sở dữ liệu. Những điều này không giống nhau.

Bạn đã tự khóa mình, vì bạn đã bật md5xác thực cho người dùng cơ sở dữ liệu postgresmà không đặt mật khẩu cho người dùng cơ sở dữ liệu postgres.

Thêm một dòng mới vào đầu pg_hba.conf:

local    postgres     postgres     peer

sau đó khởi động lại / tải lại PostgreSQL và:

sudo -u postgres psql

Từ dấu nhắc kết quả:

ALTER USER postgres PASSWORD 'my_postgres_password';

sau đó xóa dòng bạn đã thêm vào pg_hba.confvà khởi động lại PG một lần nữa. Bây giờ bạn có thể sử dụng mật khẩu bạn đã đặt ở trên để kết nối với PostgreSQL với tư cách là postgresngười dùng.

Để tìm hiểu thêm, hãy đọc chương "xác thực ứng dụng khách" của hướng dẫn sử dụngcác tài liệu trênpg_hba.conf .


1
Thử nghiệm pg9.6.6 mới trong máy chủ UBUNTU 16 LTS .... Và tôi đã ngạc nhiên bởi tất cả những "vấn đề của người mới bắt đầu" này. Đến đây với giải pháp ... Làm từng bước một ... Điều ngạc nhiên lớn: không hoạt động! psql -W postgresql://postgres:postgres@localhostsản xuất lại cùng một "FATAL: xác thực mật khẩu không thành công cho người dùng 'postgres'"
Peter Krauss

Giải pháp: tất cả các dòng tin tưởng đang hoạt động ...
Peter Krauss

Tôi đang sử dụng ssh ... Sau khi đặt lại tất cả cho md5, từng cái một (cục bộ, cục bộ, máy chủ ...), chỉ dòng "lưu trữ tất cả niềm tin 127.0.0.1 / 32" không thể thay đổi, được giữ nguyên với " Lòng tin". Vì vậy, câu hỏi mới: tại sao?
Peter Krauss

các pg_hba.conftập tin được sở hữu bởi người dùng hệ thống postgres. Tôi chỉ biết mật khẩu cơ sở dữ liệu của người dùng cơ sở dữ liệu postgres, Vì vậy, câu hỏi là làm cách nào để chỉnh sửa tệp conf này mà không thay đổi quyền sở hữu?
Shailen

Bạn có thể vui lòng cho biết, dòng local postgres postgres peerthực sự cần thiết cho pg_hba.conf? Mọi thứ hoạt động tốt mà không có nó
MaxCore

3

Cố gắng sửa đổi mật khẩu của cơ sở dữ liệu template1 bằng cách này:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1

Đã cho tôi cùng một lỗi nhưng với người dùng "root" thay vì người dùng "postgres"
Shadin

Bạn có thể giải thích tại sao điều này có thể giúp đỡ?
xliiv

2

trong pg_hba.conf của bạn

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

nếu nó không hoạt động thì hãy thử với

host    all         all         your_ip/32         trust

sau đó khởi động lại cơ sở dữ liệu của bạn, nó sẽ hoạt động tốt .. nếu bạn tin tưởng thì không cần mật khẩu nếu bạn tạo MD5 thì nó sẽ hỏi mật khẩu ...


3
không sử dụng phương pháp này ở bất cứ đâu, bạn nên luôn hạn chế quyền truy cập của người dùng vào dữ liệu của bạn
mong muốn nhất vào

trừ khi bạn đang chạy một máy chủ CTF.
Pathfinder
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.