2016-11-17 2 views
1

Я знаю, что есть много сообщений с закрытым сообщением. Я все читал. И не нашел ответа. Некоторые предлагают использовать -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' и вуаля - я там

И это не первый раз, когда я наступаю на этот грабли! Поэтому я отправляю его здесь - надеюсь, что это поможет кому-то.

ответ

1

Ошибка.

вместо

psql: FATAL: role "xxx" does not exist

должен быть

psql: FATAL: socket "yyy" does not exist

или что-нибудь другое, что приведет нас к мысли, что нам не хватает Environment Variables

так-л, как export PGHOST=/var/run/postgresql вылечит ilness

Смежные вопросы