Search code examples
linuxpostgresqlodooprivate-key

PostgreSQL won't start: "server.key" has group or world access


Whenerver I start PostgreSQL using command:

$ sudo /etc/init.d/postgresql start

Pg doesn't start up. The error reported is:

 * 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".

... and when I try to access psql as the postgres user with:

$ sudo su postgres
$ psql

it gives me an error:

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

Solution

  • I had solved it using ..

    1) Enter the relevant directory (use> locate server.key)

    2) Back up old server.key link.

    3) Copy ssl-cert-snakeoil.key to server.key

    4-5) Change its owner & group to postgres

    6) Ensure the permissions are 700 or 740 (as requested by error message)

    Recipe for my 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
    

    And now its working ! Thanks for support.