PostgreSQL不会启动:“server.key”具有组或世界访问权限

Whenerver我使用命令启动PostgreSQL

$ sudo /etc/init.d/postgresql start 

Pg不启动。 报告的错误是:

  * Starting PostgreSQL 8.4 database server * The PostgreSQL server failed to start. Please check the log output: 2010-01-21 22:10:00 PST FATAL: private key file "server.key" has group or world access 2010-01-21 22:10:00 PST DETAIL: File must be owned by the database user or root, must have no write permission for "group", and must have no permissions for "other". 

…当我尝试访问psql作为postgres用户:

 $ sudo su postgres $ psql 

它给了我一个错误:

  could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

我已经解决了它..

1)输入相关目录(使用> locate server.key)

2)备份旧的server.key链接。

3)将ssl-cert-snakeoil.key复制到server.key

4-5)将其所有者和组更改为postgres

6)确保权限是700或740(根据错误消息的要求)

食谱为我的Ubuntu 12.04&postgresql-8.3:

 sudo cd /var/lib/postgresql/8.3/main/ sudo mv server.key server.key-0 sudo cp /etc/ssl/private/ssl-cert-snakeoil.key server.key sudo chown postgres server.key sudo chgrp postgres server.key sudo chmod 740 server.key sudo /etc/init.d/postgres-8.3 start 

现在它的工作! 感谢你的支持。

如错误消息所示,修复密钥文件server.key的权限。 服务器以用户“postgres”运行,该用户应拥有该文件。 尝试

 #cd <path/to/pgsql/data> #chown postgres server.key #chmod 0640 server.key 

如何不硬拷贝的服务器密钥,并离开它的地方和喜欢它。

相反,它更简单:

更改PostgreSQL数据目录中的“server.key”链接权限(链接私有certificate.key文件的位置)

# cd /var/lib/postgresql/9.1/main/

 # chown -R postgres:postgres server.key` 

并确保在原来的证书

 # /etc/ssl/private/ssl-cert-snakeoil.key 

有这些属性,通过设置它们

 # chmod 640 ssl-cert-snakeoil.key # chown root:ssl-cert ssl-cert-snakeoil.key 

这个解决方案已经在Debian上测试过了。 请记住,CentOS可以使用带有扩展用户权限管理的SELinux,可以通过它来查看

 # ls -laZ * 

它发生在我身上,事实证明我错误地从“ssl-cert”组中删除了postgres用户,将其设置回

gpasswd -a postgres ssl-cert

 sudo chown postgres /var/lib/postgresql/8.4/main/server.key sudo chmod 0640 /var/lib/postgresql/8.4/main/server.key 

在postgresql之后点击tab来确认你的版本。

/etc/ssl/private权限设置为root:ssl-cert 。 对这个问题的评论让我尝试这个解决方案。

注意 :即使强硬的答案被接受,它并没有解决我的问题。 为了帮助别人,我想在这里回答。