bigpotato
bigpotato

Reputation: 27557

PostgreSQL: Permission denied + has wrong ownership loop?

I'm trying to run postgresql on my local machine like I usually do, however it's putting me in a situation where I can't fix. I installed postgresql91 with macports.

These are the three commands I usually have to run to get it running:

    sudo sysctl -w kern.sysv.shmall=4096
    sudo sysctl -w kern.sysv.shmmax=16777216
    sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"

However, it's giving me this error today:

    Nets-Mac-Pro:~ emai$ sudo sysctl -w kern.sysv.shmall=4096
    Password:
    kern.sysv.shmall: 4096 -> 4096
    Nets-Mac-Pro:~ emai$ sudo sysctl -w kern.sysv.shmmax=16777216
    kern.sysv.shmmax: 16777216 -> 16777216
    Nets-Mac-Pro:~ emai$ sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"
    postgres cannot access the server configuration file "/opt/local/var/db/postgresql91/defaultdb/postgresql.conf": Permission denied

When I go to /opt/local/var/db/postgresql91/ and do an ls -l this is what comes up:

drwx------  18 root  wheel  612 Jun 28 12:44 defaultdb

So I decided to add the postgres user to the wheel group, and then chmod defaultdb to 770.

drwxrwx---  18 root  wheel  612 Jun 28 12:44 defaultdb

I still get the error:

FATAL:  could not open configuration file "/opt/local/var/db/postgresql91/defaultdb/postgresql.conf": Permission denied

And so I change the file rights from:

-rw-------   1 root  wheel  19170 Jan  7 11:52 postgresql.conf

to:

-rw-rw----   1 root  wheel  19170 Jan  7 11:52 postgresql.conf

And now it complains that when I run the command again:

    Nets-Mac-Pro:~ emai$ sudo su postgres -c "/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb -p 55432"
    FATAL:  data directory "/opt/local/var/db/postgresql91/defaultdb" has wrong ownership
    HINT:  The server must be started by the user that owns the data directory.

I have no clue how I used to run the postgres server considering the file permissions of the files. Where do I find the data folder that it is hinting me about? Is there a better way to fix this?

Upvotes: 1

Views: 13071

Answers (1)

user80168
user80168

Reputation:

Postgres should be owner, and the only user capable of writing to, data directory.

So, do:

sudo chown -Rf postgres:postgres /opt/local/var/db/postgresql91/defaultdb
sudo chmod 700 /opt/local/var/db/postgresql91/defaultdb

and it should be fine.

Upvotes: 5

Related Questions