У меня есть следующий сценарий:
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
документации?
postgresql
12.04
saji89
источник
источник
.psqlrc
который задает значения по умолчанию - или просто отредактируйте,pg_hba.conf
чтобы использоватьmd5
аутентификацию для соединенийlocal
(сокет unix) Смотрите документацию дляpg_hba.conf
иpsql
.Ответы:
На самом деле, это работает как задокументировано.
Когда имя хоста опущено, он
psql
подключается к сокету Unix-домена, путь которого компилируется. Эта часть работает в вашем случае, иначе она выдаст сообщение об ошибке, отличное от того, что показывает вопрос.Сообщение об ошибке в вопросе:
относится к тому факту, что только пользователь Postgres Unix имеет разрешение на подключение в качестве пользователя базы данных postgres при использовании сокета Unix-домена. Это настраивается в
pg_hba.conf
файле.что вы обычно должны делать в Ubuntu, когда вы вошли в систему как обычный пользователь, но вы являетесь администратором системы:
источник
sudo -u postgresql psql
наsudo -u postgres psql
. Я пытался редактировать. Но не смог, так как редактирование содержит только <6 символов.Если вам не нравится соединение по умолчанию через сокет Unix, вы можете установить переменную окружения
PGHOST
. я имеюпо моему
~/.bashrc
, для подключения к серверу с таким именем. Еще несколько полезных переменных среды задокументированы по адресу http://www.postgresql.org/docs/9.5/static/libpq-envars.html.источник