2013-02-13 21 views
5

Tôi đã cài đặt Postgres trong máy cục bộ của mình.psql: FATAL: vai trò "postgres" không tồn tại (với tùy chọn -h localhost)

Khi tôi thực hiện

psql -U postgres -d buzzsumo 

nó hỏi một cách chính xác cho mật khẩu của tôi vào postgres người dùng.

Tuy nhiên, khi tôi chạy

psql -U postgres -d buzzsumo -h localhost 

nó mang lại cho tôi thông báo này lỗi:

psql: Fatal: vai trò "postgres" không tồn tại

Tại sao này trường hợp, khi trong ví dụ đầu tiên tôi đang kết nối với máy chủ cục bộ của tôi, tương đương với việc truyền vào localhost?

Trả lời

2

Bạn không nói nhưng tôi đoán bạn đang chạy postgres trên MacOS hoặc Linux.

Biểu mẫu đầu tiên (không có -h) kết nối thông qua "ổ cắm unix". Dạng thứ hai, với "-h localhost" kết nối thông qua TCP/IP tới localhost (địa chỉ IP 127.0.0.1).

Postgres xử lý hai loại kết nối này một cách khác nhau - hoặc ít nhất, nó có thể làm như vậy. Nếu bạn kiểm tra tệp "pgsql/data/pg_hba.conf" để xem cơ chế xác thực nào được cấu hình cho hai loại kết nối.

2

Ví dụ đầu tiên của bạn kết nối qua socket Unix, ví dụ thứ hai qua vòng lặp cục bộ TCP/IP (localhost).

Ví dụ đầu tiên, bạn cần loại kết nối local trong pg_hba.conf, đối với dòng thứ hai bắt đầu bằng host là có liên quan. Có thể bạn đã xác định authentication methods khác nhau cho các lớp kết nối này.

Các vấn đề liên quan