Postgresql服务器在我的localhost系统上运行并在5432上验证:
如果我输入:psql -l
,我会收到以下回复:
psql:无法连接到服务器:没有这样的文件或目录
服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
如果我输入psql -h localhost -l
,它会起作用并给我一个数据库列表。
pg_hba.conf
文件已打开,显示:
TYPE DATABASE USER ADDRESS METHOD
值“local”仅适用于Unix域套接字连接:
local all all trust
允许任何IP连接而无需密码:
host all all 0.0.0.0/0 trust
IPv4本地连接:
host all all 127.0.0.1/32 trust
IPv6本地连接:
host all all ::1/128 trust
我错过了什么?在其他系统上,命令行的第一次调用工作正常。
答案 0 :(得分:5)
听起来好像在运行命令时,您正在连接到localhost,而不是文件套接字..尝试
psql -h localhost -p 5432
答案 1 :(得分:1)
默认管理员登录sudo -u postgres psql
使用privilages psql -h host -p port -U User_Name db_name
答案 2 :(得分:0)
服务器是否在本地运行并接受Unix域上的连接 socket" /var/run/postgresql/.s.PGSQL.5432"?
这只是意味着服务器上的unix_socket_directory
配置参数与客户端psql的默认配置参数不同。
/var/run/postgresql
是基于Debian的软件包的默认Unix域套接字路径。对于自编译服务器,它是/tmp
。它也可以是postgresql.conf
中指定的自定义路径,也可以是启动指令。
假设它/tmp
你可以做psql -l -h /tmp
。该命令知道-h
之后的参数将被解释为目录而不是主机名,因为它以斜杠开头。