当我在终端输入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
答案 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”将起作用。
希望它有所帮助。