Я знаю, что есть много сообщений с закрытым сообщением. Я все читал. И не нашел ответа. Некоторые предлагают использовать -h localhost
для перехода с local
в host
правил в hba.conf
. Некоторые говорят, чтобы установить trust
на local
... Но я хочу, чтобы peer
аутентификации, а не более TCP
и не доверяли!Postgres - Аутентификация одноранговой сети - psql: FATAL: роль «xxxx» не существует
поэтому у меня есть пользовательский Вао на обоих OS
И DB
:
t=# \! who am i
vao pts/8 2016-11-11 12:23 (10.1.10.158)
t=# \du+ vao
List of roles
Role name | Attributes | Member of | Description
-----------+------------+-----------+-------------
vao | Superuser | {} |
и еще когда я пытаюсь Psql я получаю сообщение об ошибке:
$ psql t
psql: FATAL: role "vao" does not exist
По словам docs
The peer authentication method works by obtaining the client's operating system user name from the kernel and using it as the allowed database user name (with optional user name mapping). This method is only supported on local connections.
и
Peer authentication is only available on operating systems providing the getpeereid() function, the SO_PEERCRED socket parameter, or similar mechanisms. Currently that includes Linux, most flavors of BSD including OS X, and Solaris.
Так что я смотрю, поддерживает ли Debian getpeereid() или SO_PEERCRED и отчаянно вырывается для объяснения.
До тех пор, пока я не осуществил, я не обнаружил недостаток окружения. Если PSQL не найти пользователя, может быть, он не находит socket
.. Так я проверяю unix_socket_directories
в postgresql.conf
и согласно Psql инструкции:
--host=hostname Specifies the host name of the machine on which the server is running. If the value begins with a slash, it is used as the directory for the Unix-domain socket.
попробовать psql t -h '/path/to/unix_socket_directories'
и вуаля - я там
И это не первый раз, когда я наступаю на этот грабли! Поэтому я отправляю его здесь - надеюсь, что это поможет кому-то.