PostgreSQL:Permission denied +有错误的所有权循环?

时间:2013-07-03 20:37:48

标签: postgresql

我正在尝试像我平常那样在我的本地机器上运行postgresql,但是它让我陷入无法修复的境地。我用macports安装了postgresql91。

这些是我为了让它运行而通常必须运行的三个命令:

    sudo sysctl -w kern.sysv.shmall=4096
    sudo sysctl -w kern.sysv.shmmax=16777216
    sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"

但是,它今天给了我这个错误:

    Nets-Mac-Pro:~ emai$ sudo sysctl -w kern.sysv.shmall=4096
    Password:
    kern.sysv.shmall: 4096 -> 4096
    Nets-Mac-Pro:~ emai$ sudo sysctl -w kern.sysv.shmmax=16777216
    kern.sysv.shmmax: 16777216 -> 16777216
    Nets-Mac-Pro:~ emai$ sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"
    postgres cannot access the server configuration file "/opt/local/var/db/postgresql91/defaultdb/postgresql.conf": Permission denied

当我转到/opt/local/var/db/postgresql91/并执行ls -l时,会出现这种情况:

drwx------  18 root  wheel  612 Jun 28 12:44 defaultdb

所以我决定将postgres用户添加到wheel组,然后chmod defaultdb到770。

drwxrwx---  18 root  wheel  612 Jun 28 12:44 defaultdb

我仍然收到错误:

FATAL:  could not open configuration file "/opt/local/var/db/postgresql91/defaultdb/postgresql.conf": Permission denied

所以我改变了文件权限:

-rw-------   1 root  wheel  19170 Jan  7 11:52 postgresql.conf

为:

-rw-rw----   1 root  wheel  19170 Jan  7 11:52 postgresql.conf

现在它抱怨说当我再次运行命令时:

    Nets-Mac-Pro:~ emai$ sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"
    FATAL:  data directory "/opt/local/var/db/postgresql91/defaultdb" has wrong ownership
    HINT:  The server must be started by the user that owns the data directory.

我不知道如何考虑文件的文件权限来运行postgres服务器。我在哪里可以找到它暗示我的data文件夹?有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:6)

Postgres应该是所有者,并且是唯一能够写入数据目录的用户。

所以,做:

sudo chown -Rf postgres:postgres /opt/local/var/db/postgresql91/defaultdb
sudo chmod 700 /opt/local/var/db/postgresql91/defaultdb

它应该没问题。