Postgres 更改文件权限,造成损害

Postgres 更改文件权限,造成损害

有人,请,请,向我解释这到底发生了什么,以及我该如何解决这个问题?

我会让我的控制台说话:

root@worker2:/var/run# service postgresql start
 * Starting PostgreSQL 9.3 database server                                                           * The PostgreSQL server failed to start. Please check the log output:
2016-01-15 10:47:08 PST FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
                                                                                             [fail]
root@worker2:/var/run# chmod 777 postgresql
root@worker2:/var/run# ls -l |grep post
drwxrwsrwx 2 postgres    postgres       40 Jan 15 10:24 postgresql
root@worker2:/var/run# chmod g-s postgresql
root@worker2:/var/run# ls -l |grep post
drwxrwxrwx 2 postgres    postgres       40 Jan 15 10:24 postgresql
root@worker2:/var/run# service postgresql start
 * Starting PostgreSQL 9.3 database server                                                           * The PostgreSQL server failed to start. Please check the log output:
2016-01-15 10:47:48 PST FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": Permission denied
                                                                                             [fail]
root@worker2:/var/run# ls -l |grep post
drwxrwsr-x 2 postgres    postgres       40 Jan 15 10:24 postgresql

答案1

我遇到了完全相同的问题。我仍然不知道是什么原因造成的,但作为一种解决方法,我更改了 postgresql pid 文件目录和 unix 套接字目录(尽管前者可能没有必要)。我将/pg_workaround在此答案中调用这个新目录。

mkdir /pg_workaround
chown postgres:postgres /pg_workaround
chmod 777 /pg_workaround

然后编辑/etc/postgresql/<version>/main/postgresql.conf并修改以下几行:

external_pid_file = '/pg_workaround/<version>-main.pid'
unix_socket_directory = '/pg_workaround'

/pg_workaround用所需位置和<version>实际的 postgres 版本替换。)

答案2

检查 /var/run/postgresql 的所有者,如果尚未将其设置为 postgres,请键入


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


如果你运行的用户没有 sudo 权限,那么

1)更改为 root

2)将 /var/run/postgresql 的所有权更改为 postgres 用户和 postgres 组

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

我在 Ubuntu 14.04 上安装 postgres 时遇到了同样的问题,更改所有权后问题就解决了。

答案3

这通常是 VPS 上的错误导致的,因为 OS 和共享内核不同。解决方法:创建一个 cronjob,在每次重启时修复它,如下所示:

@reboot chown -R postgres:postgres /var/run/postgresql

有关此问题的更多详细信息:由于缺少 /var/run/sshd,SSH 服务器在重启后停止工作

相关内容