Làm thế nào để làm cho psql mặc định thành localhost?


10

Tôi có kịch bản sau đây:

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

Tôi đang cố gắng đăng nhập vào postgresqlmáy chủ được cài đặt trong hệ thống của mình với tư cách là người dùng postgres. Tôi chỉ có thể đăng nhập nếu tôi chỉ định -h localhost. Trong khi psqltài liệu nói rằng:

Nếu bạn bỏ qua tên máy chủ, psql sẽ kết nối qua ổ cắm tên miền Unix đến máy chủ trên máy chủ cục bộ hoặc qua TCP / IP đến localhost trên các máy không có ổ cắm tên miền Unix.

Tham chiếu: http://www.postgresql.org/docs/civerse/static/app-psql.html#R2-APP-PSQL-CON

Tại sao tôi không thể đăng nhập mà không chỉ định máy chủ lưu trữ, có một số tệp cấu hình cần bất kỳ thay đổi nào xảy ra như được nêu trong psqltài liệu không?


Tạo một .psqlrcchỉ định mặc định - hoặc chỉ chỉnh sửa pg_hba.confđể sử dụng md5xác thực cho localcác kết nối (unix socket). Xem tài liệu cho pg_hba.confpsql.
Craig Ringer

Câu trả lời:


7

Trong thực tế, nó hoạt động như tài liệu.

Khi tên máy chủ bị bỏ qua, psqlkết nối với ổ cắm tên miền Unix có đường dẫn được biên dịch. Phần đó hoạt động trong trường hợp của bạn, nếu không, nó sẽ tạo ra một thông báo lỗi khác với những gì câu hỏi hiển thị.

Thông báo lỗi trong câu hỏi:

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

liên quan đến thực tế là chỉ có các postgres của người dùng Unix mới có quyền kết nối như các postgres của người dùng cơ sở dữ liệu khi sử dụng ổ cắm tên miền Unix. Điều này được cấu hình trong pg_hba.conftập tin.

Những gì bạn thường nên làm trong Ubuntu khi bạn đăng nhập như một người dùng bình thường, nhưng bạn là quản trị viên của hệ thống:

$ sudo -u postgres psql

1
Cảm ơn .. Hãy đổi sudo -u postgresql psqlsang sudo -u postgres psql. Tôi đã cố gắng chỉnh sửa. Nhưng không thể, vì bản chỉnh sửa chỉ có <6 ký tự.
saji89

13

Nếu bạn không thích mặc định kết nối qua ổ cắm unix, bạn có thể đặt biến môi trường PGHOST. Tôi có

export PGHOST="db"

trong tôi ~/.bashrc, để kết nối với máy chủ có tên đó. Một vài biến môi trường tiện dụng hơn được ghi lại tại http://www.postgresql.org/docs/9.5/static/libpq-envars.html

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.