Postgresql:无法通过控制台上的psql连接到默认的localhost

时间:2015-05-18 16:02:52

标签: postgresql

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

我错过了什么?在其他系统上,命令行的第一次调用工作正常。

3 个答案:

答案 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之后的参数将被解释为目录而不是主机名,因为它以斜杠开头。