29

当我使用命令启动 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".

...当我尝试以用户身份访问psqlpostgres

$ 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"?
4

7 回答 7

54

我用..解决了它

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

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

于 2012-08-28T05:09:51.363 回答
9

如何不硬拷贝服务器密钥并将其留在原处和原样。

相反,它更简单:

更改 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 *
于 2014-06-18T23:08:41.383 回答
6

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

#cd <path/to/pgsql/data> 
#chown postgres server.key
#chmod 0640 server.key
于 2012-08-23T08:39:35.747 回答
3

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

注意:即使是艰难的答案也被接受,它并没有解决我的问题。为了帮助其他人,我想在这里回答

于 2014-12-06T22:45:15.957 回答
3

它发生在我身上,结果我错误地从“ssl-cert”组中删除了 postgres 用户,将其设置为

gpasswd -a postgres ssl-cert

于 2014-12-03T14:09:45.330 回答
2
sudo chown postgres /var/lib/postgresql/8.4/main/server.key

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

在 postgresql 之后点击选项卡以确认您的版本。

于 2014-02-08T19:53:39.270 回答
0

按照这个https://www.postgresql.org/docs/9.6/ssl-tcp.html

使用“chmod og-rwx server.key”并使用 chown 命令将用户更改为 postgres 用户。

于 2021-03-25T08:11:49.653 回答