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

Saš*_*aba 66 postgresql vagrant

我正试图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"?
Run Code Online (Sandbox Code Playgroud)

注意:Vagrant 1.9.2 Box: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

mal*_*dao 108

我遇到了同样的问题,与我的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] CONTEXT:配置文件第90行"/ etc /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,它应该没问题.

我已经搜索了很多来找到这个,这篇文章归功于此.

祝你好运!

  • 优秀的指南。充满全面的解释! (5认同)
  • 对于第 4 步,我必须执行“sudo systemctl start postgresql@9.5-main”而不是“pg_ctlcluster 9.5 main start”。感谢您精彩的解释! (3认同)

nic*_*odp 42

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

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql
Run Code Online (Sandbox Code Playgroud)

编辑:

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

你可以跑

brew postgresql-upgrade-database
Run Code Online (Sandbox Code Playgroud)

要解决这个问题。

  • 断电后,我的开发 Mac 上总是出现这个问题。删除 .pid 文件总是对我有用,在我的例子中它是:`rm /usr/local/var/postgresql@9.6/postmaster.pid` (3认同)

mar*_*sek 22

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

我是怎么修的(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
  • 从第1步开始重复,直到创建所有缺少的目录
  • 完成后再试图再次启动postgresql它可能会FATAL: lock file "postmaster.pid" already exists
  • 删除postmaster.pid:rm /usr/local/var/postgres/postmaster.pid
  • 开始postgres: pg_ctl -D /usr/local/var/postgres start
  • 完成✨


小智 8

警告:这将删除数据库

使用命令:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
Run Code Online (Sandbox Code Playgroud)

  • 这不会删除整个数据库吗?我认为警告的话应该是合适的。 (14认同)

wfg*_*geo 7

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

在此处输入图片说明

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

通过运行

sudo chmod +r pg_hba.conf

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

sudo service postgresql start

能够使服务器再次运行。


小智 7

警告:这将删除数据库

在 zsh 中:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
Run Code Online (Sandbox Code Playgroud)

在无数小时的故障排除后,这是唯一对我有用的方法。


J21*_*12O 6

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


小智 6

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

sudo systemctl start postgresql@9.5-main
Run Code Online (Sandbox Code Playgroud)


Mev*_*mir 6

这对我有用:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;
Run Code Online (Sandbox Code Playgroud)


Den*_*s P 5

就我而言,Postgres 是通过 Homebrew Services 进行管理的(即通过brew services start postgresql@10我使用的 Postgres 10 的终端命令启动),对于该设置,我必须发现几个必要的步骤,然后才能应用此线程中的任何建议。所以我想分享那篇文章,因为它可能会对具有相同设置的人有所帮助。

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

简单介绍一下背景知识:升级到 macOS Big Sur 后,我发现 Postgres 无法工作并且运行会导致psql上述原始问题中提到的错误。我尝试启动 Postgres(通过brew services start postgresql@10命令),这导致了一条消息Service postgresql@10 already started。如果我尝试重新启动它(通过brew services restart postgresql@10),我会收到一条消息,表明它已停止,然后成功启动。但!这是一个误导性的消息,我花了相当长的时间搜索配置问题等,才发现该服务实际上并未成功启动。

所以,调查这个问题的方法是:

  1. 确保通过运行启动服务brew services start postgresql@10(后一个参数可能会有所不同,具体取决于您的 Homebrew 软件包名称,例如postgresql@12或普通postgresql)。
  2. 跑步brew services list。该命令为您提供服务的真实状态。就我而言,它说 Postgres 的状态是错误的:

Name Status User Plist postgresql@10 error Denis /Users/Denis/Library/LaunchAgents/homebrew.mxcl.postgresql@10.plist redis started Denis /Users/Denis/Library/LaunchAgents/homebrew.mxcl.redis.plist

  1. 要进一步调查,请打开 Plist 列中相同命令输出中显示的配置(我曾经nano /Users/Denis/Library/LaunchAgents/homebrew.mxcl.postgresql@10.plist检查过它)。
  2. 在配置中查找StandardErrorPath密钥,然后打开位于该密钥的值中的文件,即在<string>该密钥后面的标签中。就我而言,是的/usr/local/var/log/postgresql@10.log
  3. 打开该日志并检查最新的错误(我使用nano /usr/local/var/log/postgresql@10.log然后Alt+/转到文件末尾)。
  4. 瞧。这是真正需要调查的错误,然后您可以在以前的答案中查找或谷歌查找。我不会在这里讨论其余的内容,因为这个答案的目标是展示如果您使用 Homebrew Services 运行 Postgres,如何找到真正的错误。(在我的例子中,它lock file "postmaster.pid" already exists已经在前面的答案中涵盖了,加上在我的例子中在错误消息中检查的路径/usr/local/var/postgresql@10)。


jet*_*com 5

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

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

$ pg_lsclusters

步骤2:重启Postgres集群

$ sudo pg_ctlcluster 12 main start

确保将 12 替换为您的 Postgres 版本

第三步:再次检查并连接

$ pg_lsclusters

$ sudo -i -u postgres

$ psql

在此输入图像描述