У меня следующий сценарий:
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-домена.
blockquote>Ссылка: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON
Почему я не могу войти без указания хоста, есть ли какой-нибудь файл конфигурации, который требует каких-либо изменений для того, чтобы происходили события, как сказано в документации
psql
?
Фактически, это работает так, как задокументировано.
Когда имя хоста опущено, psql
подключается к сокету Unix-домена, путь которого компилируется. Эта часть работает в вашем случае, в противном случае она выдаст сообщение об ошибке, отличное от того, что показывает вопрос.
Сообщение об ошибке в вопросе:
blockquote>psql: FATAL: Ident authentication failed for user "postgres"
относится к тому факту, что только пользователь Ung Postgres имеет разрешение на подключение в качестве пользователя базы данных postgres при использовании Unix доменное гнездо. Это настраивается в файле
pg_hba.conf
.Что вы обычно должны делать в Ubuntu, когда вы вошли в систему как обычный пользователь, но вы являетесь администратором системы:
$ sudo -u postgres psql
Если вам не нравится подключение по умолчанию через сокет Unix, вы можете установить переменную окружения PGHOST
. У меня есть
export PGHOST="db"
в моем ~/.bashrc
, чтобы подключиться к серверу с таким именем. Еще несколько полезных переменных среды описаны на http://www.postgresql.org/docs/9.5/static/libpq-envars.html