Подтвердить что ты не робот

PostgreSQL не запускается: "server.key" имеет доступ к группе или миру

Когда сервер запускает 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"?
4b9b3361

Ответ 1

Я решил его использовать.

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

И теперь его работа! Спасибо за поддержку.

Ответ 2

Как говорится в сообщении об ошибке, исправьте разрешения для ключевого файла server.key. Сервер работает как пользователь "postgres", которому принадлежит файл. Попробуйте

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

Ответ 3

Как насчет того, чтобы не жестко копировать ключ сервера и оставлять его там, где он и как он есть.

Вместо этого проще:

Измените ссылку "server.key" Разрешения в каталоге данных PostgreSQL (его Местоположение, где находится ссылка на закрытый файл сертификата.)

# 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 *

Ответ 4

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

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

Нажмите вкладку после postgresql, чтобы подтвердить свою версию.

Ответ 5

Это случилось со мной, и оказалось, что я ошибочно удалил пользователя postgres из группы "ssl-cert", установил его с помощью

gpasswd -a postgres ssl-cert

Ответ 6

Задайте разрешения от /etc/ssl/private до root:ssl-cert. Комментарии к этой проблеме заставили меня попробовать это решение.

ПРИМЕЧАНИЕ: даже жесткий ответ принят, он не разрешил мою проблему. Чтобы помочь кому-то другому, я хотел бы здесь ответить.