如何无法连接到服务器时连接到psql?

时间:2017-06-23 16:51:10

标签: postgresql

当我在终端输入psql时,我得到以下内容:

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

我的brew services list显示Postgres正在运行:

postgresql@9.5 started john doe /Users/johndoe/Library/LaunchAgents/homebrew.mxcl.postgresql@9.5.plist

1 个答案:

答案 0 :(得分:0)

运行此命令以确定,您的群集数据目录在哪里(Postgres保存数据的目录,WAL日志等):

sudo ps ax | grep postgres | grep D

如果Postgres正在运行,你会看到这样的smth(这是Postgres.app,而不是Homebrew版本,但它应该类似):

Nikolays-MacBook-Pro:~ nikolay$ sudo ps ax | grep postgres | grep D
Password:
  599   ??  S      0:00.06 /Users/nikolay/PostgreSQL/pg96/bin/postgres -D /Users/nikolay/PostgreSQL/data/pg96 -r /Users/nikolay/PostgreSQL/data/logs/pg96/postgres.log

转到群集目录(在此示例中为“/ Users / nikolay / PostgreSQL / data / pg96”)并打开postgresql.conf,它应该在那里。

您需要找到postgresql.conf中以下选项中设置的内容:

listen_addresses
port

这两个配置告诉您,Postgres所在的网络接口和端口。

在大多数情况下,他们是这样的:

listen_addresses = '*'
port = 5432

还有其他配置文件,pg_hba.conf,您可以将其视为Postgres的“内部防火墙” - 检查内部的规则,如果需要,可以编辑它们。请记住,如果您编辑任何连接设置,则需要重新启动Postgres。

在这种情况下,要连接到Postgres,您需要:

psql -h localhost -p 5432 -U postgres template1

这里我假设您在“postgres”操作系统用户下安装了Postgres,并且在安装过程中创建了相应的数据库用户。可能你需要尝试不同的方式:

psql -h localhost -p 5432 -U yourname template1

- template1是一个默认数据库,它是您要创建的所有数据库的模板,因此您可以随时尝试连接它。 “yourname”是您的MacOS用户名。

当然,“-p 5432”可以省略,因为5432是Postgres的默认端口。 “-U yourname”也可以省略 - 在这种情况下,psql将获取您的操作系统用户名并将其用作数据库用户名。如果它与数据库用户名相同,也可以省略DB名称。所以在某些情况下,“psql -h localhost”将起作用。

希望它有所帮助。