我正在尝试在postgres中创建一个表空间,但我遇到了所有权问题。我正在使用的命令是:
CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace'
我收到错误:
ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted
该文件夹属于postgres:postgres,我尝试将其更改为maggie,但如果我去了:
chown maggie:postgres /home/john/BSTablespace
我明白了:
chown: invalid user: `maggie:postgres'
用户怎么不存在?如果我列出postgres中的用户,它确实会出现。我有什么想法可能做错了吗?
答案 0 :(得分:20)
我猜测问题在于父目录“/ home / john”的权限。您的主目录可能已设置为只有您的用户可以访问它(即chmod 700)(对于您的主目录来说,chmod 700是一件好事,不要更改它。)
做类似的事情:
mkdir /BSTablespace chown postgres:postgres /BSTablespace
然后
CREATE TABLESPACE magdat OWNER maggie LOCATION '/BSTablespace';
应该可以正常工作。
关于用户maggie:数据库用户与OS用户不同。这并不是说你在两个名为maggie的地方都没有用户 - 但是你需要在数据库和操作系统中创建用户才能实现这一点。
答案 1 :(得分:1)
在Mac上安装Postgres,并尝试使用PgAdmin
创建数据库,表空间等时。您需要知道PgAdmin Utility
正在postgres
下运行安装postgres数据库和实用程序时创建的帐户。
postgres account
是_postgres
组
(dscacheutil -q group|grep -i postgres
命令将列出与postgres
帐户相关联的组)
最佳做法是在root(/
)下创建一个用于存放表空间的新目录(让我们称之为/postgresdata
,然后使postgres:_postgres
成为该目录的所有者,使用下面的命令)
sudo chown postgres:_postgres /postgresdata
这应该为你做。
然后,您可以在/postgresdata
下为每个唯一表空间