I'm trying to create a tablespace in postgres, but I'm getting ownership problems. The command I'm using is:
CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace'
I get the error:
ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted
The folder belongs to postgres:postgres, I've tried changing it to maggie, but if I go :
chown maggie:postgres /home/john/BSTablespace
I get:
chown: invalid user: `maggie:postgres'
How come the user does not exist? If I list the users inside of postgres it does come up. Any ideas what I could be doing wrong?
When you install Postgres on a Mac, and are trying to use
PgAdmin
to create your databases, tablespaces, etc. You need to know that thePgAdmin Utility
is running under thepostgres
account that it created when you installed the postgres database and the utilities.The
postgres account
is part of the_postgres
group(
dscacheutil -q group|grep -i postgres
command will list the group associated with thepostgres
account)The best practice would be to create a new directory under root(
/
) for housing the tablespaces,(let us call it/postgresdata
then makepostgres:_postgres
the owners of that directory, using the command below)sudo chown postgres:_postgres /postgresdata
This should do it for you. You could then create a subdirectory under
/postgresdata
for each unique table spaceI would hazard a guess that the problem lies in the permissions of the parent directory "/home/john". Your home directory is probably setup so that only your user has access (i.e chmod 700) to it (it's a good thing for your home directory to be chmod 700, don't change it).
Doing something like:
and then
should work fine.
Regarding the user maggie: database users are not the same as OS users. That isn't to say that you couldn't have a user in both places named maggie-- but you would need to create the user in both the database and the OS for that to happen.