启动Postgres时出现错误

6

我在一个现场网站(以及相应的开发网站)上遇到了一个奇怪的错误,Postgres数据库无法启动。这个问题突然发生,我不知道是什么原因导致的。

尝试在终端中启动时出现了可怕的“不接受5432连接”的错误提示。

sudo -u postgres 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"?

如果我尝试重新启动Postgres:

service postgresql restart
 * Restarting PostgreSQL 9.1 database server                                                                                                                                                                    * The PostgreSQL server failed to start. Please check the log output:
2015-07-15 13:49:24 EEST LOG:  database system was interrupted; last known up at 2015-07-12 20:02:18 EEST
2015-07-15 13:49:24 EEST FATAL:  could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied
2015-07-15 13:49:24 EEST LOG:  startup process (PID 11172) exited with exit code 1
2015-07-15 13:49:24 EEST LOG:  aborting startup due to startup process failure

有没有任何想法可以尝试下一步,或者是什么原因导致了这个问题?

3个回答

5

make-ssl-cert generate-default-snakeoil --force-overwrite

使用该命令生成默认自签名SSL证书并强制覆盖。

当我重写证书后,我开始可以访问postgresql。最终原因非常简单(当你重新加载服务器Ubuntu 18.04时,在我这种情况下),你会失去一些默认设置。请小心。非常感谢@AndrewSavinykh的帮助。Дякую теска))。


1
原来这与更新中的fsync权限错误有关,当我们的VPS提供商需要在另一个问题后重新启动时,这一错误被触发。
文章中列出的步骤解决了这个问题:
(as root)
# go to PGDATA directory
cd /var/lib/postgresql/9.1/main

# Backup server.crt server.key just to be sure!
cp server.crt server.crt.bk
cp server.key server.key.bk

ls -l server.crt server.key

# confirm both of those files are symbolic links
# to files in /etc/ssl before going further

# remove symlinks to SSL certs
rm server.crt
rm server.key 

# copy the SSL certs to the local directory
cp /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
cp /etc/ssl/private/ssl-cert-snakeoil.key server.key

# set permissions on ssl certs
# and postgres ownership on everything else
# just in case
chown postgres *
chmod 640 server.crt server.key

service postgresql start

谢谢 @iharob - 只能在两天之后完成这个! - user2761030
我的 /var/lib/postgresql/9.1/main 目录下没有 server.crt 和 server.key 文件。实际上,在整个硬盘中都找不到它们。 - Andrew Savinykh
2
如果 @AndrewSavinykh 仍然遇到这个问题,您可以使用以下命令重新生成证书 make-ssl-cert generate-default-snakeoil --force-overwrite。我之前也遇到了同样的问题,这个方法解决了它。 - BANJOSA

0
在我的情况下,一些Ubuntu/Postgres升级更改了文件的权限为600。
将其更改为644解决了该问题,我可以启动postgre守护程序。
chmod 644 /etc/ssl/certs7ssl-cert-snakeoil.pem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接