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

我试图在我的流浪机器上运行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"?

注:游民1.9.2 框:Ubuntu/trusty64,https://atlas.hashicorp.com/ubuntu/boxes/trusty64

编辑 我用来安装和运行Postgres的命令:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres
368411 次浏览

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

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

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

我建议遵循以下说明:

  1. 使用sudo service postgresql start验证PostgreSQL服务是否正在运行
  2. 从终端运行pg_lsclusters
  3. 检查您正在运行的集群是什么,输出应类似于:

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

    9.6-.-.-main-5432在线postgres/var/lib/PostgreSQL/9.6/main

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

  4. 从版本和集群中
  5. 复制信息,并像这样使用: pg_ctlcluster <version> <cluster> start,所以在我的例子中,使用版本9.6和集群'主',它将pg_ctlcluster 9.6 main start
  6. 如果出现错误,那么PostgreSQL将生成一个日志,可以在__abc0上访问该日志,因此在我的示例中,完整的命令将__abc1。
  7. 输出应显示错误内容。

    2017-07-13 16:53:04 BRT[32176-1]日志:认证方式“ ALL ”无效
    2017-07-13 16:53:04 BRT[32176-2]上下文:配置文件“/etc/PostgreSQL/9.5/main/PG_hba.conf ”第90行
    2017-07-13 16:53:04 BRT[32176-3]致命:无法加载PG_hba.conf

  8. 修复错误并通过sudo service postgresql restart重启PostgreSQL服务,一切正常。

我搜索了很多才找到这个,归功于这个工作岗位

祝你好运!

打开数据库管理器并执行此脚本

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

我在虚拟机中创建SQL数据库时也遇到了同样的错误。我已经将/etc/PostgreSQL/9.3/main/PostgreSQL.conf__abc0的默认值更改为总RAM的75%。当我发出创建新数据库的命令时,我收到了相同的错误。

关掉电源,给婴儿奶瓶(RAM),转眼间,它就工作了。

当我更改了/etc/hosts文件中的某些内容时,同样的事情也发生在我身上。在把它改回127.0.0.1 localhost后,它为我工作了。

当我发现这个问题时,我只是为那些感到失落和绝望的人发布这个帖子。似乎有时通过编辑一些与psotgresql相关的配置文件,可以意外地更改文件的权限:

enter image description here

请注意,PG_hba.conf属于root用户,用户甚至无法读取它。这导致Postgres无法打开此文件,因此无法启动服务器,从而抛出在原始问题中看到的错误。

通过跑步

sudo chmod +r pg_hba.conf

我可以让postgres用户再次访问这个文件,然后在运行之后

sudo service postgresql start

能够使服务器重新运行。

我也有同样的问题,但这里的答案都没有帮助。

我如何修复它(Mac)

  • 尝试使用pg_ctl -D /usr/local/var/postgres start启动PostgreSQL
  • 查找表示类似FATAL: could not open directory "pg_tblspc": No such file or directory错误消息
  • 创建缺少的目录__abc0
  • 从第一步开始重复,直到创建了所有缺少的目录
  • 完成后,然后尝试再次启动PostgreSQL,它可能FATAL: lock file "postmaster.pid" already exists
  • 删除postmaster.PIDrm /usr/local/var/postgres/postmaster.pid
  • 启动postgres:__abc0
  • 完成了

只需使用直接版本sudo apt-get install PostgreSQL-9.5重新安装pgsql(您必须在安装新软件包之前删除该软件包)

警告:这将删除数据库

使用命令:

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

警告:这将删除数据库

在zsh中:

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

经过无数个小时的故障排除,这是唯一对我有用的东西。

我可以通过运行以下命令来解决此问题:

sudo systemctl start postgresql@9.5-main

这对我有用:

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

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

不久前我也遇到过类似的问题。在尝试了5个以上的建议后,我决定回到基础,从头开始。这意味着删除我的PostgreSQL安装,并在重新安装PostgreSQL时遵循本指南。https://help.ubuntu.com/lts/serverguide/postgresql.html

这个错误发生在我的Mac Mini被拔掉电源后(所以强制关机),我所要做的就是重新启动它

我建议您应该澄清Postgres端口。 在我的例子中,我不知道Postgres在哪个端口上运行。

lsof -i | grep 'post'

然后,您可以知道哪个端口正在侦听。

psql -U postgres -p "port_in_use"

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

在我的例子中,是上次系统崩溃时没有正确删除的锁文件postmaster.id导致了这个问题。用sudo rm /usr/local/var/postgres/postmaster.pid删除它并重新启动Postgres解决了这个问题。

我的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

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

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

这主要是一个临时解决方案,但由于我找不到更好的解决方案,这对我来说很有用。

更新:如果问题显示另一个postmaster正在运行,则尝试将其从该位置删除(您的postmaster.PID位置将显示给您)

rm /usr/local/var/postgres/postmaster.pid

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

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

对于M1 Mac:

rm /opt/homebrew/var/postgres/postmaster.pid
brew services restart postgresql

如果你遇到这个问题(由@luckyguy73报道):psql: FATAL: database "postgresql" does not exist

你可以跑

brew postgresql-upgrade-database

来修复它。

如果以上答案都对你不起作用,那么请试试这个。

很多人都提到了很多解决这个问题的方法。但是他们都忘记了,当你的磁盘没有足够的空间,或者分配给postgres的空间已满时,同样的问题也会出现。

检查您的系统存储,如果已满,请释放一些空间!然后通过sudo service postgresql restart重新启动Postgres,或执行停止和启动sudo service posgresql stop,然后sudo service postgresql start

这将解决这个问题,它为我解决了。

FATAL:  could not load server certificate file "/etc/ssl/certs/ssl-cert-snakeoil.pem": No such file or directory
LOG:  database system is shut down
pg_ctl: could not start server

我有一个丢失的SSL-cert-snakeoil.PEM文件,所以我使用make-SSL-cert generate-default-snakeoil--强制覆盖创建了它,它工作正常。

在我的例子中,我必须运行journalctl-Xe,它显示我的磁盘已满。然后我从/var/log中删除了一些.gz项,我可以再次重新启动PostgreSQL.

我在Kali Linux上。我不得不删除PostgreSQL的BREW版本

brew uninstall postgresql

sudo -u postgres psql让我进入了Root Postgres

Ubuntu 20

这个问题发生在我身上,因为Ubuntu预装版本的PostgreSQL-9.6服务器总是关闭,在尝试了上述所有答案后,它没有启动。

解决方案:

  1. 我安装了PostgreSQL的另一个版本,即PostgreSQL-13,使用以下命令:__abc0它将安装最新版本的PostgresSQL.

  2. 我使用以下命令查看服务器是online还是downpg_lsclustersserver_status如果PostgreSQL的新版本是online,我们将继续删除PostgreSQL的old版本。

  3. 我们将看到所有与PostgreSQL相关的安装包,使用以下命令:__abc0__abc1

  4. 拆下old version,此处为postgresql-9.6。使用此命令: sudo apt-get --purge remove postgresql-9.6 postgresql-client-9.6用旧版本号替换9.6。与latest Version 13相关的最后剩余的包: enter image description here

  5. 重新启动您的PostgreSQL最新版本服务器,postgresql-13。使用以下命令:__abc1将命令中的__abc2替换为最新的版本号。

  6. 现在,如果您尝试__abc0命令,您将得到一个与您的用户相关的错误,如图所示:__abc1

  7. 要删除上述错误,安装过程创建了一个名为postgres的用户帐户,该帐户与默认的postgres角色相关联。要切换到postgres帐户,请使用以下命令:__abc0此命令将使您登录到交互式postgres会话。您还可以使用此命令\password postgres来设置此用户的密码。

    postgresql session

  8. 然后将Port更改为deafult port of postgresql,即5432,因为默认情况下,所有应用程序都将尝试使用此端口连接到PostgreSQL,使用以下命令:sudo nano /etc/postgresql/13/main/postgresql.conf,它将打开PostgreSQL配置文件,然后搜索port并将其更改为5432。之后,您需要使用此命令__abc6来重新启动服务器。注意,将命令中的13替换为最新版本。

如果要创建自己的用户/角色,请使用以下命令:__abc0。该脚本将提示您进行一些选择,如在image中,并根据您的响应,它将执行正确的postgres命令以创建符合您的规范的用户。 prompt to create new role

教程:有关PostgreSQL相关命令的更多信息

在我的例子中,Postgres是通过自制服务管理的(即,通过我使用的Postgres 10的brew services start postgresql@10终端命令启动),并且对于该设置,在我可以在此线程中应用任何建议之前,我必须发现要做的几个基本步骤。所以我想分享这篇文章,因为它可能会帮助那些拥有相同设置的人。

注意:以下所有命令都将在终端中运行。

简单介绍一下背景知识:在升级到MacOS Big Sur后,我发现Postgres无法正常工作,并且运行psql会导致上面原始问题中提到的错误。我尝试启动Postgres(通过brew services start postgresql@10命令),这导致出现ABC2__消息。如果我尝试重新启动它(通过brew services restart postgresql@10),我会收到一条消息,提示它已停止,然后__启动ABC4。但是!这是一个误导性的信息,我花了相当多的时间搜索配置问题等。才发现服务在现实中没有成功启动。

所以,调查的方法是:

  1. 确保通过运行brew services start postgresql@10来启动服务(后一个参数可能不同,取决于您的自制软件包名称,例如postgresql@12或普通postgresql)。
  2. 运行brew services list。这是为您提供服务的真实的状态的命令。在我的例子中,它说Postgres的状态是错误的:

名称状态用户plist PostgreSQL@10错误丹尼斯/users/denis/library/launchagents/homebrew.mxcl.postgresql@10.plist. Redis启动了Denis/users/Denis/library/launchagents/homebrew.mxcl.redis.plist

  1. 要进一步研究,请打开plist列中同一命令输出中显示的配置(我使用了__abc0来检查它)。
  2. 在配置中,查找StandardErrorPath项,并打开位于该项的值中的文件,即位于该项后面的<string>标记中的文件。在我的例子中,它是/usr/local/var/log/postgresql@10.log
  3. 打开日志并检查最新错误(我使用nano /usr/local/var/log/postgresql@10.log,然后使用Alt+/转到文件末尾)。
  4. 瞧。这是要调查的实际的错误,然后您可以在前面的答案或Google中查找。我不会在这里介绍其余的内容,因为这个答案的目的是说明如果您使用自制服务来运行Postgres,如何找到真正的错误。(在我的例子中,它是在前面的答案中已经涵盖的lock file "postmaster.pid" already exists,加上在错误消息中检查的路径,在我的例子中/usr/local/var/postgresql@10)。

只需在PostgreSQL官方文档的安装步骤中运行这些命令就可以了(我使用的是Fedora 33):

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13

RHEL安装链接

我的问题发生在BREW更新之后,所以我已经运行了

pg_ctl -D /usr/local/var/postgres start

我得到了这个结果:

FATAL: database files are incompatible with server 2021-07-07 13:27:21.692 CEST [70896] DETAIL: The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 13.2. stopped waiting

我已经跑了

brew postgresql-upgrade-database

卡利用户请这样做

Sudo服务PostgreSQL重新启动

面临着同样的问题。

我也无法使用psql,因为服务中断了。
pg_lsclusters显示集群已关闭,我无法使用pg_ctlcluster <version> <cluster_name> start启动它,因为“ postgres ”是所有者。

解决了我的sudo -i -u postgres service postgresql start
问题 (Ubuntu 20.04)

我无法使用psql命令连接,并不断得到错误无法连接到服务器:没有这样的文件或目录。

步骤1:检查Postgres集群的状态

$ pg_lsclusters

步骤2:重新启动Postgres群集

$ sudo pg_ctlcluster 12 main start

确保用您的Postgres版本替换12

步骤3:再次检查并连接

$ pg_lsclusters

$ sudo -i -u postgres

$ psql

enter image description here