Câu hỏi Làm thế nào tôi có thể nhận được pg_dump để xác thực đúng cách


Tôi đã thử sử dụng biến chủ PGPASSWORD và .pgpass và cả hai loại này đều không cho phép tôi xác thực cơ sở dữ liệu. Tôi có chmod'd .pgpass cho phép thích hợp và cũng đã thử:

export PGPASSWORD=mypass and PGPASSWORD=mypass

Mật khẩu DOES chứa một \ tuy nhiên tôi đã theo dõi nó trong một dấu nháy đơn PGPASS='mypass\' và nó vẫn sẽ không xác thực.

Tôi đang chạy:

pg_dump dbname -U username -Fc

và tôi vẫn nhận được

pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL:  Peer authentication failed for user "username"

76
2018-05-03 11:42


gốc


Điều đó "... Peer authentication ..." một phần của thông báo lỗi có nghĩa là nó không sử dụng xác thực mật khẩu ở tất cả. - Milen A. Radev


Các câu trả lời:


Giải pháp nhanh

Vấn đề là nó đang cố gắng thực hiện cục bộ peer xác thực 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 cho 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 để 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 bằng tên máy chủ và sẽ cho phép bạn xác thực bằng mật khẩu qua md5 phương pháp.

Cấu hình phát triển ưa thích của tôi

CHÚ THÍCH: Điều này chỉ nên được sử dụng trên các máy trạm đơn 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ột máy sản xuất hoặc nhiều người dùng.

Khi phát triển dựa trên trường hợp 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 thông qua một ổ cắm unix cục bộ như 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 thay đổi peer ở trên để trust và tải lại postgres.

# Don't require a password for local connections
local   all             all                                     trust

154
2018-05-03 19:34



Nó đã giúp đỡ. cảm ơn - StarWars
Đối với bất cứ ai không chắc chắn nơi tập tin conf của bạn là: sử dụng sudo locate pg_hba.conf - nó phải là sudo vì người dùng postgres sẽ là người duy nhất có quyền truy cập vào thư mục (tôi nghĩ). - jcollum