Postgresql 无法启动Postgres服务器,因为对锁定文件的权限被拒绝

Postgresql 无法启动Postgres服务器,因为对锁定文件的权限被拒绝,postgresql,Postgresql,我重新启动了我的Postgres服务器,但是现在。 我检查了我的“pgstartup.log”日志文件。上面说: creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating informat

我重新启动了我的Postgres服务器,但是现在。 我检查了我的“pgstartup.log”日志文件。上面说:

creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

Success. You can now start the database server using:
/usr/bin/postgres -D /var/lib/pgsql/data
/usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start

FATAL:  could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
FATAL:  could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied

您认为删除
/tmp/.s.PGSQL.5432.lock
会有效吗

PostgreSQL通常在正确终止时删除锁文件

这可能是由于另一个PostgreSQL实例与另一个用户运行时异常终止(对postmaster来说是kill-9)

因此,如果您确定没有运行Postgres进程,您可能可以删除该文件而不会出现任何问题。您还应该使用
ipcs
命令检查是否有任何过时的共享内存段,在这种情况下,使用
ipcrm
删除它

一次解决所有这些问题的最好方法可能是重新启动服务器


注意:永远不要
杀死-9
任何PostgreSQL进程。

看起来您可能有另一个PostgreSQL实例作为不同的用户在同一端口上运行,或者您以前以不同的用户身份启动此PostgreSQL实例,然后不干净地将其停止

检查
/tmp/.s.PGSQL.5432.lock的所有权

ls -l /tmp/.s.PGSQL.5432.lock
它是否与运行PostgreSQL的用户匹配

删除
/tmp/
中的锁文件相对无害。(但永远不要删除
postmaster.pid
lock文件)。如果另一个PostgreSQL实例仍在运行,您将无法通过unix套接字连接到它,或者您可能会遇到无法绑定到tcp上的端口5432的错误


我同意@mnencia的观点,如果服务器重启简单实用,那么它是最好的选择。

谢谢您的建议。 首先,我尝试更改锁定文件的权限,但没有成功 后来我删除了锁文件,解决了我的问题


谢谢

由于在/tmp目录上设置了权限,Postgres无法将文件写入/tmp。 作为根用户在终端中执行:

chmod 1777 /tmp

对我来说,这是数据库文件的权限问题,它是组/世界可读的。那是错误的!数据库文件应为0700。Aft

删除它并告诉我们。。。对吧?:)根据定义,您可以从/tmp文件夹中删除任何内容。但是问题可能会再次出现,请检查您用于postgress的用户是否拥有从/tmp访问和删除文件的所有权限。请注意,这是套接字锁,而不是
postmaster.pid
是的,是的,但我不知道如何在被杀死的postmaster旁边留下一个过时的锁文件。另一种可能是锁文件没有过时,持有锁文件的邮局主管仍然在一个完全不同的
listen\u地址上运行(TCP套接字在Unix套接字之前打开)。您好,谢谢您的建议。