Psql无法连接到服务器:没有这样的文件或目录,5432错误?


114

我正在尝试psql在我的Vagrant机器上运行,但出现此错误:

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"?

注意:流浪者1.9.2邮箱:ubuntu / trusty64,https ://atlas.hashicorp.com/ubuntu/boxes/trusty64

我用于安装和运行postgres的EDIT命令:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

1
这是对我有用
Bruno Louvem Azeredo

Answers:


156

我遇到了同样的问题,与pg_hba.conf文件(位于中/etc/postgresql/9.6/main)的配置有关。请注意9.6是我正在使用的postgresql版本。

该错误本身与postgresql的配置错误有关,这会导致服务器在启动之前崩溃。

我建议遵循以下指示:

  1. 使用以下命令验证postgresql服务正在运行 sudo service postgresql start
  2. pg_lsclusters从终端运行
  3. 检查您正在运行的集群是什么,输出应为:

    版本-群集端口状态所有者数据目录

    9.6 ------- main-5432在线postgres /var/lib/postgresql/9.6/main

    忽略“-”符号,因为它们仅用于对齐。重要信息是版本和群集。您还可以在状态栏中检查服务器是否正在运行。

  4. 复制版本和群集中的信息,并按以下方式使用: pg_ctlcluster <version> <cluster> start,所以在我的情况下,使用版本9.6和群集“ main”,将pg_ctlcluster 9.6 main start
  5. 如果出现问题,则postgresql将生成一个日志,可以对其进行访问/var/log/postgresql/postgresql-<version>-main.log,因此在我的情况下,完整命令为sudo nano /var/log/postgresql/postgresql-9.6-main.log
  6. 输出应显示错误是什么。

    2017-07-13 16:53:04 BRT [32176-1]日志: 无效的身份验证方法“全部”
    2017-07-13 16:53:04 BRT [32176-2] 上下文:配置文件“ / etc”的第90行/postgresql/9.5/main/pg_hba.conf“
    2017-07-13 16:53:04 BRT [32176-3]致命:无法加载pg_hba.conf

  7. 修复错误,并通过重新启动postgresql服务sudo service postgresql restart,应该没问题。

我已经进行了大量搜索以找到此内容,这一帖子值得一提

祝你好运!


1
优秀的指南。充满全面的解释!
SalathielGenèse,

37

我遇到了同样的问题,但是这里的答案都没有帮助。

我如何修复它(Mac)

  • 尝试以以下方式启动postgresql pg_ctl -D /usr/local/var/postgres start
  • 查找显示类似的错误消息FATAL: could not open directory "pg_tblspc": No such file or directory
  • 创建该丢失的目录 mkdir /usr/local/var/postgres/pg_tblspc
  • 从第一步开始重复,直到创建了所有丢失的目录
  • 完成后尝试再次启动postgresql 可能会FATAL: lock file "postmaster.pid" already exists
  • 删除postmaster.pidrm /usr/local/var/postgres/postmaster.pid
  • 使用以下内容启动postgres: pg_ctl -D /usr/local/var/postgres start
  • 完成✨

13

我只是将其发布给那些感到迷茫和绝望的人,就像我发现这个问题时一样。似乎有时通过编辑一些与psotgresql相关的配置文件,可能会意外更改文件的权限:

在此处输入图片说明

注意pg_hba.conf是如何属于root的,用户甚至无法读取它。这导致postgres无法打开此文件,因此无法启动服务器,从而引发原始问题中看到的错误。

通过运行

sudo chmod +r pg_hba.conf

我能够使该文件再次可供postgres用户访问,然后在运行后

sudo service postgresql start

能够使服务器再次运行。


是的,这是我的问题,并且没有在日志中指出(或者如果我不理解,则没有指出)。
EAmez

这不完全是我发生的事,但是由于某种原因,网络服务失去了对整个目录结构的写特权。这个答案向我指出了正确的方向,因此赞成。
布拉德·马修斯

5

是否/etc/postgresql/9.6/main/postgresql.conf显示该端口已分配?在我默认的Xubuntu Linux安装中,出于某些原因,我显示了port = 5433,但我确实记得,但我确实在同一文件中listen_addresses = 'localhost'注释掉了该行,并取消了注释listen_addresses = '*'。所以也许开始检查那里。希望能有所帮助。


4

使用命令:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

9
这不会删除整个数据库吗?我认为应该警告一下。
d33tah

1
感谢@Tucker Watts和@Gaurav Verma。我通过尝试两种解决方案解决了自己的问题,并添加了此命令pg_ctl -D /usr/local/var/postgres -l logfile start
Niyongabo

4

这对我有用:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

这两个步骤在Mac上为我解决了问题:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

编辑:

如果您遇到此问题(@ luckyguy73报告): psql: FATAL: database "postgresql" does not exist

你可以跑

brew postgresql-upgrade-database

要解决这个问题。


谢谢男人,我按照您的指示从无法连接到致命设备:“ psql:致命:数据库” postgresql“不存在”
luckyguy73

嗯,这很适合我。您设法解决了吗?
nicodp

不用担心,事实证明还可以。我刚刚运行了“ brew postgresql-upgrade-database”,就成功了,谢谢
luckyguy73

1
很高兴您将其修复!如果您不介意,我也会将其添加到答案中,以防其他人遇到相同的问题。谢谢
nicodp

3

在zsh中:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

经过数小时的故障排除,这是对我唯一有效的方法。



2

我更改了/etc/hosts文件中的内容后,发生了同样的事情。将其更改回127.0.0.1 localhost它后对我有用。



2

就我而言,是postmaster.id导致上一次系统崩溃期间未正确删除的锁定文件。删除sudo rm /usr/local/var/postgres/postmaster.pid并重新启动Postgres解决了该问题。


1

在VM中创建SQL数据库时,我遇到了相同的错误。我已经更改了/etc/postgresql/9.3/main/postgresql.conf的默认值shared_buffers = 200MB总RAM的75%。好吧,我忘了在VM中实际分配该RAM。当我发出创建新数据库的命令时,我收到了相同的错误。

关闭电源,给婴儿装上奶瓶(RAM)并保存,然后开始工作。


1

我能够通过运行来解决此问题:

sudo systemctl start postgresql@9.5-main

1

当我从上一个pg_basebackup备份文件中恢复数据库时遇到了这个错误。之后,当我尝试连接数据库(psql)时,出现了相同的错误。解决了该错误,当我更新pg_hba.conf文件时,无论哪里存在“对等”身份验证,我都将其替换为“ md5”,然后重新启动postgres服务。之后,问题得以解决。



1

拔下Mac mini插头(因此强制关机)后,此错误发生在我身上,而我要做的所有修复操作都是重新启动


1

我建议您应该阐明postgres的端口。就我而言,我不知道postgres在哪个端口上运行。

lsof -i | grep 'post'

那么您可以知道哪个端口正在监听。

psql -U postgres -p "port_in_use"

与端口选项,可能是答案。您可以使用psql。


1

我偶尔也会遇到相同的问题,但主要是在macOS升级之后。关闭并迁移到新版本通常可以为我修复(根据您的版本进行更改)。所以先升级你的PostgreSQL

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

这主要是一个临时解决方案,但是由于我找不到更好的解决方案,因此对我有效。


我尝试了所有其他方法后,brew postgresql-upgrade-database终于对我
有用了

0

我的Mac上的postgres 11有相同的问题。每次重新启动后我都会收到此错误

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"?

作为临时解决方法

brew services stop postgresql@11
brew services start postgresql@11

0

如果上述答案中的任何一个都不适合您,请尝试使用此答案,

许多人提到了许多解决此问题的方法!但是所有人都忘记了,当磁盘空间不足或分配的空间postgres已满时,也会出现相同的问题

检查您的系统存储,如果已满,则释放一些空间!然后通过重启您的postgres sudo service postgresql restart或停止并开始sudo service posgresql stop然后sudo service postgresql start

这将解决问题,为我解决

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.