这是我输入的:
user@user-computer:/usr/lib/postgresql/9.4/bin$ ./postgres -D /etc/postgresql/9.4/main/
这就是我得到的:
[4173-1] FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
有人能帮帮我吗?我应该更改ss-cert. key文件的权限吗?
eufgjt7s1#
这个错误的发生是因为你试图以你自己的非特权用户的身份启动PostgreSQL,它不应该这样运行。Ubuntu提供了PostgreSQL打包,它应该以这样的方式启动:
$ sudo /etc/init.d/postgresql start # or $ sudo service postgresql start
$ sudo /etc/init.d/postgresql start
# or
$ sudo service postgresql start
或使用pg_ctlcluster进行更细粒度的控制,请参见http://manpages.ubuntu.com/manpages/trusty/man8/pg_ctlcluster.8.html
pg_ctlcluster
7y4bm7vi2#
当postgres用户不属于ssl-cert用户组时可能会发生这种情况尝试将postgres用户添加到组ssl-cert确保postgres是/var/lib/postgresql/version_no/main的所有者,例如:sudo chown postgres -R /var/lib/postgresql/9.6/main/运行下面的代码来修复用户组问题并修复权限
postgres
ssl-cert
/var/lib/postgresql/version_no/main
sudo chown postgres -R /var/lib/postgresql/9.6/main/
# > It happened to me and it turned out that I removed erroneously the postgres user from "ssl-cert" group, set it back withsudo gpasswd -a postgres ssl-cert# Fixed ownership and modesudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.keysudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key# now postgresql starts! (and install command doesn't fail anymore)sudo service postgres restart#also try running pg_ctlcluster <version> <cluster> <action>sudo pg_ctlcluster 9.6 main start
# > It happened to me and it turned out that I removed erroneously the postgres user from "ssl-cert" group, set it back with
sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgres restart
#also try running pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
courtsey到GabLeRoux
okxuctiv3#
也应该为目录 (ssl-cert-snakeoil.key文件所在的目录,即/etc/ssl/private)正确设置URL。注意:父目录中需要execute(x)权限,以遍历指向文件的目录。这就是我的工作:
ssl-cert-snakeoil.key
/etc/ssl/private
chmod 640 /etc/ssl/private/ssl-cert-snakeoil.keychmod 755 /etc/ssl/private
chmod 640 /etc/ssl/private/ssl-cert-snakeoil.key
chmod 755 /etc/ssl/private
根据所有者和组,权限可以相应地更新。(请记住,postgres可能不是访问此特定文件夹的唯一应用程序/服务)
root
drwx--x---
drwxr-xr-x
3条答案
按热度按时间eufgjt7s1#
这个错误的发生是因为你试图以你自己的非特权用户的身份启动PostgreSQL,它不应该这样运行。
Ubuntu提供了PostgreSQL打包,它应该以这样的方式启动:
或使用
pg_ctlcluster
进行更细粒度的控制,请参见http://manpages.ubuntu.com/manpages/trusty/man8/pg_ctlcluster.8.html7y4bm7vi2#
当
postgres
用户不属于ssl-cert
用户组时可能会发生这种情况尝试将postgres
用户添加到组ssl-cert
确保
postgres
是/var/lib/postgresql/version_no/main
的所有者,例如:sudo chown postgres -R /var/lib/postgresql/9.6/main/
运行下面的代码来修复用户组问题并修复权限
courtsey到GabLeRoux
okxuctiv3#
也应该为目录 (
ssl-cert-snakeoil.key
文件所在的目录,即/etc/ssl/private
)正确设置URL。注意:父目录中需要execute(x)权限,以遍历指向文件的目录。
这就是我的工作:
根据所有者和组,权限可以相应地更新。(请记住,
postgres
可能不是访问此特定文件夹的唯一应用程序/服务)/etc/ssl/private
文件夹属于组ssl-cert
和所有者root
,则该文件夹的权限可以如下所示:drwx--x---
/etc/ssl/private
文件夹属于组root
和所有者root
,则该文件夹的权限可以如下所示:drwxr-xr-x