我试图在我的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
答案 0 :(得分:87)
我遇到了同样的问题,与我的pg_hba.conf文件(位于/etc/postgresql/9.6/main
)的配置有关。请注意9.6是我正在使用的postgresql版本。
错误本身与postgresql配置错误有关,导致服务器在启动之前崩溃。
我建议按照这些说明操作:
sudo service postgresql start
pg_lsclusters
检查您正在运行的群集是什么,输出应该是:
版本 - 群集端口状态所有者数据目录
9.6 ------- main - 5432 online postgres /var/lib/postgresql/9.6/main
忽视' ---'标志,因为他们在那里只用于对齐。 重要的信息是版本和集群。您还可以在状态列中检查服务器是否正在运行。
pg_ctlcluster <version> <cluster> start
,所以在我的情况下,使用版本9.6和群集&#39; main&#39;,它将是pg_ctlcluster 9.6 main start
/var/log/postgresql/postgresql-<version>-main.log
上访问的日志,因此在我的情况下,完整命令将是sudo nano /var/log/postgresql/postgresql-9.6-main.log
。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
sudo service postgresql restart
重启postgresql服务,应该没问题。我已经搜索过很多东西来找到这个,这归功于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)
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
FATAL: lock file "postmaster.pid" already exists
rm /usr/local/var/postgres/postmaster.pid
pg_ctl -D /usr/local/var/postgres start
答案 3 :(得分:4)
/etc/postgresql/9.6/main/postgresql.conf
是否显示该端口已分配?在我默认的Xubuntu Linux安装中,我出于某种原因显示了port = 5433,尽管我记得最清楚,但是我在同一个文件中注释了listen_addresses = 'localhost'
并取消注释了行listen_addresses = '*'
。所以也许开始检查那里。希望有所帮助。
答案 4 :(得分:3)
我只是发布这个给那些感觉迷茫和绝望的人,就像我在发现这个问题时那样。似乎有时通过编辑一些与psotgresql相关的配置文件,可能会意外地更改文件的权限:
请注意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
),我会收到一条消息,表明它已停止,然后成功启动。但!这是一条误导性消息,我花了很多时间搜索配置问题等,然后才发现该服务实际上并未成功启动。
所以,调查这个的方法是:
brew services start postgresql@10
确保服务已启动(后一个参数可能会有所不同,具体取决于您的 Homebrew 包名称,例如 postgresql@12
或普通 postgresql
)。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
nano /Users/Denis/Library/LaunchAgents/homebrew.mxcl.postgresql@10.plist
进行检查)。StandardErrorPath
键,并打开位于该键值中的文件,即在键后的 <string>
标记中。就我而言,它是 /usr/local/var/log/postgresql@10.log
。nano /usr/local/var/log/postgresql@10.log
然后 Alt+/
转到文件末尾)。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 服务器总是停机,在尝试了上述所有答案后,它没有启动。
解决方案:
我安装了另一个版本的 Postgresql,它是 postgresql-13,使用这个命令:sudo apt install postgresql
它将安装最新版本的 postgresql。
我使用以下命令查看服务器是 online
还是 down
:pg_lsclusters
如果新版本的 postgresql 是 online
,我们将继续删除 old
版本的 postgresql。
移除 old version
,即 postgresql-9.6
。使用这个命令:
sudo apt-get --purge remove postgresql-9.6 postgresql-client-9.6
将 9.6
替换为您的旧版本号。
重启你的 postgresql 最新版本服务器,这里是 postgresql-13
。使用此命令:sudo systemctl restart postgresql@13-main
将命令中的 13
替换为您的最新版本号。
为了消除上述错误,安装过程创建了一个名为 postgres 的用户帐户,该帐户与默认的 Postgres 角色相关联,要切换到 postgres 帐户,请使用以下命令:sudo -u postgres psql
此命令将记录您进入交互式 Postgres 会话。您还可以使用此命令 \password postgres
为该用户设置密码。
然后将 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 命令以根据您的规范创建用户。
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
答案 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