繁体   English   中英

createuser无法连接到数据库postgres

[英]createuser could not connect to database postgres

请不要将此问题移至askubuntu,因为我认为此问题不是特定于操作系统的。

当我调用createuser postgres命令时(现在不管是否提供任何参数都无关紧要),出现此错误:

createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

通常,这意味着postgres服务器已关闭,但这次没有关闭:

pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.4 main    5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log

sudo service postgresql status
9.4/main (port 5432): online

但是确实没有/tmp/.s.PGSQL.5432文件,因为我的配置文件( /etc/postgresql/9.4/main/postgresql.conf )具有以下行:

unix_socket_directories = '/var/run/postgresql'

所以我真的不明白为什么createuser想要访问/tmp/.s.PGSQL.5432吗? 可以将此路径硬编码到createuser二进制文件中吗? 我看不到任何命令行参数来指定createuser的设置文件位置...

数据库服务器将读取postgresql.conf文件,而客户端应用程序(例如createuser,psql等)则不会读取该文件。 (实际上,客户端应用程序无法读取服务器配置文件,因为客户端可能必须连接到服务器(可能位于世界的一半)才能知道该配置文件的位置)。

相反,您必须告诉客户端应用程序在哪里可以找到套接字目录。

如果您的客户端应用程序(createuser)正在连接到本地主机(这一定是因为您没有指定其他主机),则可以使用host参数指定套接字目录的名称。

例如: createuser -h /var/run/postgresql newusername

参见http://www.postgresql.org/docs/devel/static/libpq-connect.html#LIBPQ-CONNECT-HOST

希望能有所帮助。

您已经开始服务了吗?

service postgresql start

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM