PostgreSQL服务器启动失败,无法创建锁定文件:权限被拒绝。

49

我正在尝试安装并运行PostgreSQL服务器,但每当我使用

sudo apt-get install postgresql

我收到以下错误信息:

* Starting PostgreSQL 9.1 database server                                       
* The PostgreSQL server failed to start. Please check the log output:
2014-04-03 17:18:16 PDT FATAL:  could not create lock file     "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
                                                                    [fail]
invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing postgresql-common (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of postgresql-9.1:
postgresql-9.1 depends on postgresql-common (>= 115~); however:
Package postgresql-common is not configured yet.

dpkg: error processing postgresql-9.1 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of postgresql:
 postgresql depends on postgresql-9.1; however:
  Package postgresql-9.1 is not configured yet.

dpkg: error processing postgresql (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a          previous failure.
Errors were encountered while
 processing:
 postgresql-common
 postgresql-9.1
 postgresql
E: Sub-process /usr/bin/dpkg returned an error code (1)

我猜这是一个权限问题,我该如何解决?我正在运行Ubuntu 13.10。


这里有解决方案。我认为它应该会对你有所帮助。http://askubuntu.com/questions/371722/uninstall-postgresql-from-ubuntu - Jan Krajewski
4个回答

89

/var/run/postgresql的所有者更改为postgres

sudo chown -R postgres:postgres /var/run/postgresql

如果您当前使用的用户没有sudo权限,则:

  1. 切换到root用户:

    su -
    
  2. /var/run/postgresql的所有权更改为用户postgres和组postgres

  3. chown -R postgres:postgres /var/run/postgresql
    

当我在Ubuntu 14.04上安装postgres时,遇到了同样的问题,改变所有者解决了我的问题。


我尝试了,但返回的是这个; 截图 - dawsondiaz
1
嗨,dawsondiaz,感谢提供截图。您首先需要切换到root用户。在chown命令之前,您漏掉了“sudo”。如果dawson用户没有sudo权限,则需要执行以下步骤:1)通过“su -”切换到root用户,2)执行“chown -R postgres:postgres /var/run/postgresql”。 - Jessica Chiang
1
这对我也起作用了,但我已经安装了Postgres 9.3。Synaptic软件包管理器想要发出更新,更新运行后,Postgres由于与您问题中详细描述的相同原因而无法重新启动。手动修复权限问题使我能够再次启动本地postgres服务器。 - danielricecodes
这也是在Linux Mint上的解决方案。 - Frederik Krautwald
3
在 Fedora 上将所有者更改为 postgres:postgres 对我没有起作用,但将其更改为当前用户可以解决问题。sudo chown -R $USER:$USER /var/run/postgresql - Asalle

23

锁定文件位于/var/run。为了修复此目录的权限,我需要运行sudo chmod a+w /var/run/postgresql


我以不同于postgres的用户身份运行postgresql,但它不允许我在/var/run/postgresql创建锁文件。在我看来,允许全局读写是不好的,所以我只是将我的用户添加到了postgres组中。 - Mukesh Sai Kumar

2

您能检查一下 /var/run 目录的文件权限吗?

ls -l /var/run

如果缺少“写”权限,请尝试:
sudo chmod o+w /var/run

当我输入lrwxrwxrwx 1 root root 4 april 1 17:46 /var/run -> /run时,我接着执行了sudo chmod o+w /var/run,然后运行postgresql服务器,仍然出现同样的问题。 - dawsondiaz
你可以尝试执行命令 "sudo apt-get update",然后再执行命令 "sudo apt-get install postgresql" 吗? - new_sys_admin
这是一个符号链接。/run 的权限是什么?请执行 ls -ld /run - Craig Ringer

0
我花了很多时间寻找解决方案。
我将我的用户添加到postgres组,但这并没有帮助。 最后,我被迫选择了不太安全的方式。
  chmod -R 777 /var/run/postgresql/

来源

我的错误

致命错误:无法创建锁文件 "/var/run/postgresql/.s.PGSQL.5432.lock":权限被拒绝


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