postgresql:为什么我在运行psql时必须指定-h localhost?

Wel*_*lls 6 postgresql macos

psql mydb 收益率:

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

psql -h localhost mydb工作得很好.pg_hba.conf好像:

local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

怎么了?

小智 8

我有完全相同的事情发生在我身上,大概是由于psql的冲突版本(一个来自Lion,一个来自自制软件).虽然我仍然无法弄清楚如何使psql使用/ tmp套接字目录,但我确实有一个解决方法.

将以下内容放在.bashrc(或.zshrc等)中:

export PGHOST=/tmp
Run Code Online (Sandbox Code Playgroud)

这会将正确的"主机"设置回正确的套接字目录,而不必提供-h标志


wil*_*ser 6

可能 psql 和服务器对 unix 域套接字使用不同的位置。( /var/pgsql_socket/ 是一个奇怪的位置)如果您混合来自不同包的二进制文件,则可能会发生这种情况。尝试找到套接字(/tmp/ 是一个很好的起点)您可以通过滥用 -h 选项来强制 psql 使用不同的目录:

psql -h /tmp/
Run Code Online (Sandbox Code Playgroud)


Oh *_*oon 2

这似乎是一个已报告的缺陷