我输入了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/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
我sudo netstat -nlp | grep 5432
以前看到的状态,但没有显示.我在网上搜索,有人告诉我修改,pg_hba.conf
但我不能locate
这个文件.我也试过这个命令sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
.它不能工作.
小智 48
就我而言,以下内容适用于在遇到错误后启动 postgres
sudo service postgresql start
sudo su - postgres
psql
Run Code Online (Sandbox Code Playgroud)
Hal*_*Ali 31
该错误指出psql实用程序找不到要连接到数据库服务器的套接字.您没有在后台运行数据库服务,或者套接字位于其他位置,或者可能pg_hba.conf
需要修复.
该命令可能因操作系统而异.但是在大多数*ix系统上,以下都可以工作,它将在所有正在运行的进程中搜索postgres
ps -ef | grep postgres
Run Code Online (Sandbox Code Playgroud)
在我的系统上,mac osx,这会吐出来
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
Run Code Online (Sandbox Code Playgroud)
最后一列显示用于启动服务器的命令和选项.
您可以使用以下命令查看可用于启动postgres服务器的所有选项.
man postgres
Run Code Online (Sandbox Code Playgroud)
从那里,你会看到选项-D
,-r
分别是datadir
&logfilename
.
使用find
搜索插座的位置,这应该是在某处/tmp
sudo find /tmp/ -name .s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
如果postgres正在运行并接受套接字连接,则上面应该告诉您套接字的位置.在我的机器上,结果是:
/tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
然后,尝试使用此文件的位置通过psql连接,例如.
psql -h /tmp/ dbname
Run Code Online (Sandbox Code Playgroud)
如果找不到套接字,但看到该服务正在运行,请验证pg_hba.conf文件是否允许本地套接字.
浏览到datadir
,你应该找到该pg_hba.conf
文件.
默认情况下,在文件底部附近,您应该看到以下行:
# "local" is for Unix domain socket connections only
local all all trust
Run Code Online (Sandbox Code Playgroud)
如果您没有看到它,则可以修改该文件,然后重新启动postgres服务.
KNT*_*NTY 20
有多种潜在因素可能导致 psql 无法在 WSL 2 Ubuntu 环境中与 PostgreSQL 服务器建立连接。
要检查 Postgresql 是否正在运行,请使用此命令
sudo service postgresql status
Run Code Online (Sandbox Code Playgroud)
如果它没有运行,您可以使用以下命令启动它
sudo service postgresql start
Run Code Online (Sandbox Code Playgroud)
如果您在 Postgresql 配置中进行了更改以应用更改
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
Nou*_*had 12
如果启动postgres服务没有错误,请按照下列步骤操作
pg_lsclusters
将列出设备上运行的所有postgres集群例如:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Run Code Online (Sandbox Code Playgroud)
最有可能的情况是你的情况下和postgres服务
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgres
sudo service postgres restart
Run Code Online (Sandbox Code Playgroud)
如果此过程不成功,则会抛出错误.我的错误是(你可以看到错误登录/var/log/postgresql/postgresql-9.6-main.log
)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
Run Code Online (Sandbox Code Playgroud)
确保这postgres
是/var/lib/postgresql/version_no/main
例如的所有者:sudo chown postgres -R /var/lib/postgresql/9.6/main/
它发生在我身上,事实证明我错误地从"ssl-cert"组删除了Postgres用户.运行以下代码以修复用户组问题并修复权限
#set user to group back with
sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgres restart
Run Code Online (Sandbox Code Playgroud)
Aas*_*thi 11
我面临同样的问题
sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
sudo systemctl start postgresql
sudo systemctl status postgresql
Run Code Online (Sandbox Code Playgroud)
这对我有用。
我在 Ubuntu 18.04 上使用 PostgreSQL 时遇到了这个问题。
我检查了我的PostgreSQL
状态并意识到它运行良好,使用:
sudo systemctl status postgresql
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下方法重新启动PotgreSQL
机器上的服务器:
sudo systemctl restart postgresql
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
在Noushad 的回答之后,我做了以下事情:
列出设备上运行的所有 Postgres 集群:
pg_lsclusters
Run Code Online (Sandbox Code Playgroud)
这给了我这个红色的输出,表明它们都关闭了,状态也显示了:
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
11 main 5433 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
12 main 5434 down postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
Run Code Online (Sandbox Code Playgroud)
为服务器集群之一重新启动 pg_ctlcluster。对我来说,我重新启动了PG 10:
sudo pg_ctlcluster 10 main start
Run Code Online (Sandbox Code Playgroud)
然而,它抛出了下面的错误,当我尝试重新启动其他 PG 集群时发生了同样的错误:
Job for postgresql@10-main.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status postgresql@10-main.service" and "journalctl -xe" for details.
Run Code Online (Sandbox Code Playgroud)
检查日志是否有错误,在这种情况下,我的是PG 10:
sudo nano /var/log/postgresql/postgresql-10-main.log
Run Code Online (Sandbox Code Playgroud)
我看到以下错误:
2020-09-29 02:27:06.445 WAT [25041] FATAL: data directory "/var/lib/postgresql/10/main" has group or world access
2020-09-29 02:27:06.445 WAT [25041] DETAIL: Permissions should be u=rwx (0700).
pg_ctl: could not start server
Examine the log output.
Run Code Online (Sandbox Code Playgroud)
这是因为我更改了 PostgreSQL 数据目录的文件权限。
我通过运行以下命令修复了它。我在我的机器上运行了 3 个 PG 集群的命令:
sudo chmod -R 0700 /var/lib/postgresql/10/main
sudo chmod -R 0700 /var/lib/postgresql/11/main
sudo chmod -R 0700 /var/lib/postgresql/12/main
Run Code Online (Sandbox Code Playgroud)
之后我重新启动了每个 PG 集群:
sudo pg_ctlcluster 10 main start
sudo pg_ctlcluster 11 main start
sudo pg_ctlcluster 12 main start
Run Code Online (Sandbox Code Playgroud)
最后我再次检查了集群的健康状况:
pg_lsclusters
Run Code Online (Sandbox Code Playgroud)
这一次一切都很好,因为状态显示在网上:
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
11 main 5433 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
12 main 5434 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
Run Code Online (Sandbox Code Playgroud)
就这样。
我希望这有帮助
解决了!虽然我不知道发生了什么,但是我只是删除了所有东西并重新安装了它。这是我用来删除sudo apt-get --purge remove postgresql\*
和的命令dpkg -l | grep postgres
。后者是在不干净的情况下查找所有数据包。
在 debian 上从 psql 客户端远程访问服务器上的 postgres 数据库的快速指南:(更改的配置已记录在文件中):
/etc/postgresql/10/main/postgresql.conf
使用listen_address进行编辑*/etc/postgresql/10/main/pg_hba.conf
并在最后添加行host all all 0/0 md5
postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
sudo /etc/init.d/postgresql restart
更改生效
从客户端登录psql --host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
小智 5
我通过检查我的文件系统解决了这个问题,磁盘已完全满,因此数据库无法启动
Unix 域套接字上的连接"/var/run/postgresql/.s.PGSQL.5432" ?
我尝试了一系列的故障排除,直到我检查我的磁盘使用情况,发现它已满,使用率100%,
df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
92902 次 |
最近记录: |