Postgresql 当psql无法连接到服务器时,如何连接到它?

Postgresql 当psql无法连接到服务器时,如何连接到它?,postgresql,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服务列表显示Postgres正在运行: postgresql@9.5 sta

当我在终端中键入
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服务列表
显示Postgres正在运行:

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

运行此命令以确定集群数据目录(Postgres保存数据、WAL日志等的目录)的位置:

如果Postgres正在运行,您将看到这样的smth(这是Postgres.app,不是自制版本,但应该类似):

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

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

listen_addresses
port
这两种配置告诉您,Postgres位于哪个网络接口和哪个端口上

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

listen_addresses = '*'
port = 5432

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

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

psql -h localhost -p 5432 -U postgres template1
这里我假设您在“Postgres”OS用户下安装了Postgres,并且在安装过程中创建了相应的数据库用户。可能您需要尝试不同的方法:

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

当然,“-p5432”可以省略,因为5432是Postgres的默认端口。 “-uyourname”也可以省略——在本例中,psql将使用您的OS用户名,并将其用作DB用户名。如果DB名称与数据库用户名相同,也可以省略它。因此,在某些情况下,“psql-h localhost”将起作用


希望有帮助。

服务器是否设置为在“/var/pgsql\u socket”打开套接字?socket\u目录必须不同。如果我没有从
sudo ps ax | grep postgres | grep D
得到任何信息,请尝试
psql-h localhost
,这是否意味着postgres没有正确运行?同时检查
sudo ps ax | grep postgres
。如果那里什么都没有——是的,它没有运行。
psql -h localhost -p 5432 -U postgres template1
psql -h localhost -p 5432 -U yourname template1