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

时间:2017-03-07 16:43:45

标签: postgresql vagrant

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

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

28 个答案:

答案 0 :(得分:87)

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

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

我建议按照这些说明操作:

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

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

    9.6 ------- main - 5432 online postgres /var/lib/postgresql/9.6/main

      

    忽视' ---'标志,因为他们在那里只用于对齐。   重要的信息是版本和集群。您还可以在状态列中检查服务器是否正在运行。

  6. 从版本和群集中复制信息,并使用如下: pg_ctlcluster <version> <cluster> start,所以在我的情况下,使用版本9.6和群集&#39; main&#39;,它将是pg_ctlcluster 9.6 main start
  7. 如果出现问题,那么postgresql将生成一个可以在/var/log/postgresql/postgresql-<version>-main.log上访问的日志,因此在我的情况下,完整命令将是sudo nano /var/log/postgresql/postgresql-9.6-main.log
  8. 输出应显示错误是什么。
      

    2017-07-13 16:53:04 BRT [32176-1]日志:无效的身份验证方法&#34;所有&#34;   
    2017-07-13 16:53:04 BRT [32176-2] CONTEXT:配置文件的第90行&#34; /etc/postgresql/9.5/main/pg_hba.conf" < /强>   
    2017-07-13 16:53:04 BRT [32176-3]致命:无法加载pg_hba.conf

  9. 修复错误并通过sudo service postgresql restart重启postgresql服务,应该没问题。
  10. 我已经搜索过很多东西来找到这个,这归功于post

    祝你好运!

答案 1 :(得分:15)

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

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

编辑:

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

您可以运行

brew postgresql-upgrade-database

进行修复。

答案 2 :(得分:11)

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

我如何修复(mac)

  • 尝试使用pg_ctl -D /usr/local/var/postgres start来启动PostgreSQL
  • 查找错误消息,内容类似于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.pid rm /usr/local/var/postgres/postmaster.pid
  • pg_ctl -D /usr/local/var/postgres start
  • 开头postgres
  • 完成✨

答案 3 :(得分:4)

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

答案 4 :(得分:3)

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

enter image description here

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

运行

sudo chmod +r pg_hba.conf

我能够再次使用postgres用户访问此文件,然后运行

sudo service postgresql start

能够让服务器再次运行。

答案 5 :(得分:3)

使用命令:

Stream

答案 6 :(得分:3)

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

答案 7 :(得分:2)

就我而言,Postgres 是通过 Homebrew 服务管理的(即通过我使用的 Postgres 10 的 brew services start postgresql@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 服务运行 Postgres,如何找到真正的错误。 (就我而言,它是前面答案中已经涵盖的 lock file "postmaster.pid" already exists,以及在错误消息中正确检查的路径,在我的情况下是 /usr/local/var/postgresql@10)。

答案 8 :(得分:2)

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

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

检查您的系统存储空间,如果其完全释放了一些空间!然后通过sudo service postgresql restart重新启动postgres或停止并先启动sudo service posgresql stop然后sudo service postgresql start

这将解决问题,为我解决

答案 9 :(得分:2)

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

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

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

更新:如果问题表明正在运行另一个邮局局长,请尝试将其从该位置删除(您的postmaster.pid地点将显示给您)

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

答案 10 :(得分:2)

我建议您弄清楚postgres的端口。 就我而言,我不知道postgres在哪个端口上运行。

lsof -i | grep 'post'

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

psql -U postgres -p "port_in_use"

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

答案 11 :(得分:1)

拔掉Mac mini的电源后,我发生了此错误(因此被迫关机),而要做的所有事情就是重启

答案 12 :(得分:1)

同样的事情发生在我身上,因为我改变了/etc/hosts文件中的内容。将其更改回127.0.0.1 localhost后,它对我有效。

答案 13 :(得分:1)

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

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

这对我有用:

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

答案 17 :(得分:0)

我能够通过运行以下方法解决该问题:

sudo systemctl start postgresql@9.5-main

答案 18 :(得分:0)

在zsh内:

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

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

答案 19 :(得分: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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

关闭电源,给宝宝送瓶子(RAM)和presto,它有效。

答案 22 :(得分:0)

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 --force-overwrite 创建了文件,并且运行良好。

答案 23 :(得分:0)

对于我来说,我必须运行journalctl -xe,它表明我的磁盘已满。然后,我从/ var / log中删除了一些.gz项目,然后我可以重新启动postgresql。

答案 24 :(得分:0)

我正在使用Kali Linux。我不得不使用

删除postgresql的酿造版本

brew uninstall postgresql

sudo -u postgres psql让我进入了root postgres

答案 25 :(得分:0)

<块引用>

Ubuntu 20

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

解决方案:

  1. 我安装了另一个版本的 Postgresql,它是 postgresql-13,使用这个命令:sudo apt install postgresql 它将安装最新版本的 postgresql。

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

  3. 我们将看到与 postgresql 相关的所有安装包,使用以下命令:dpkg -l | grep postgresqlsee postgresql insalled packages

  4. 移除 old version,即 postgresql-9.6。使用这个命令: sudo apt-get --purge remove postgresql-9.6 postgresql-client-9.69.6 替换为您的旧版本号。

  5. 重启你的 postgresql 最新版本服务器,这里是 postgresql-13。使用此命令:sudo systemctl restart postgresql@13-main 将命令中的 13 替换为您的最新版本号。

  6. 现在,如果您尝试 psql 命令,您将收到与您的用户相关的错误,如图所示:user fatal

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

    postgresql session

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

<块引用>

如果您想创建自己的用户/角色,请使用以下命令:13。该脚本将提示您进行一些选择,如 sudo -u postgres createuser --interactive 中的选项,并且根据您的响应,它将执行正确的 Postgres 命令以根据您的规范创建用户。 prompt to create new role

Tutorial: For more information on postgresql related commands

答案 26 :(得分:0)

只需从官方 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 Installation link

答案 27 :(得分:0)

我的问题发生在 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