Как сделать psql по умолчанию для localhost?

10

У меня есть следующий сценарий:

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=# 

Я пытаюсь войти на postgresqlсервер, установленный в моей системе, как пользователь postgres. Я могу войти, только если я укажу -h localhost. В то время как psqlдокументация говорит, что:

Если вы опустите имя хоста, psql подключится через сокет Unix-домена к серверу на локальном хосте или через TCP / IP к localhost на машинах, на которых нет сокетов Unix-домена.

Ссылка: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON

Почему я не могу войти без указания хоста, существует ли какой-либо файл конфигурации, который нуждается в каких-либо изменениях для того, чтобы происходили события, как указано в psqlдокументации?

saji89
источник
Создайте, .psqlrcкоторый задает значения по умолчанию - или просто отредактируйте, pg_hba.confчтобы использовать md5аутентификацию для соединений local(сокет unix) Смотрите документацию для pg_hba.confи psql.
Крейг Рингер

Ответы:

7

На самом деле, это работает как задокументировано.

Когда имя хоста опущено, он psqlподключается к сокету Unix-домена, путь которого компилируется. Эта часть работает в вашем случае, иначе она выдаст сообщение об ошибке, отличное от того, что показывает вопрос.

Сообщение об ошибке в вопросе:

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

относится к тому факту, что только пользователь Postgres Unix имеет разрешение на подключение в качестве пользователя базы данных postgres при использовании сокета Unix-домена. Это настраивается в pg_hba.confфайле.

что вы обычно должны делать в Ubuntu, когда вы вошли в систему как обычный пользователь, но вы являетесь администратором системы:

$ sudo -u postgres psql
Даниэль Верите
источник
1
Спасибо .. Пожалуйста, измените sudo -u postgresql psqlна sudo -u postgres psql. Я пытался редактировать. Но не смог, так как редактирование содержит только <6 символов.
saji89
13

Если вам не нравится соединение по умолчанию через сокет Unix, вы можете установить переменную окружения PGHOST. я имею

export PGHOST="db"

по моему ~/.bashrc, для подключения к серверу с таким именем. Еще несколько полезных переменных среды задокументированы по адресу http://www.postgresql.org/docs/9.5/static/libpq-envars.html.

Эндрю
источник