Giải pháp nhanh chóng
Vấn đề là nó đang cố gắng thực hiện peer
xác thực cục bộ dựa trên tên người dùng hiện tại của bạn. Nếu bạn muốn sử dụng mật khẩu, bạn phải chỉ định tên máy chủ -h
.
pg_dump dbname -U username -h localhost -F c
Giải trình
Điều này là do những điều sau đây trong pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
Điều này yêu cầu Postgres sử dụng peer
xác thực cho người dùng cục bộ yêu cầu tên người dùng postgres phải khớp với tên người dùng hệ thống hiện tại của bạn. Dòng thứ hai đề cập đến các kết nối sử dụng tên máy chủ và sẽ cho phép bạn xác thực bằng mật khẩu thông qua md5
phương thức này.
Cấu hình phát triển ưa thích của tôi
LƯU Ý : Điều này chỉ nên được sử dụng trên các máy trạm một người dùng. Điều này có thể dẫn đến một lỗ hổng bảo mật lớn trên máy sản xuất hoặc nhiều người dùng.
Khi phát triển dựa trên một phiên bản postgres cục bộ, tôi muốn thay đổi phương thức xác thực cục bộ của mình thành trust
. Điều này sẽ cho phép kết nối với postgres qua ổ cắm unix cục bộ với tư cách là bất kỳ người dùng nào không có mật khẩu. Nó có thể được thực hiện bằng cách chỉ cần thay đổi peer
ở trên thành trust
và tải lại các postgres.
# Don't require a password for local connections
local all all trust