2011-03-06 68 views
7

我想在postgres中创建一个表空间,但是我得到了所有权问题。我使用的命令是:在postgresql中创建一个表空间

CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace' 

我得到的错误:

ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted 

文件夹属于Postgres的:Postgres的,我试图将其更改为邵美琪,但如果我去:

chown maggie:postgres /home/john/BSTablespace 

我得到:

chown: invalid user: `maggie:postgres' 

用户如何不存在?如果我列出postgres中的用户,它会出现。任何想法我可能做错了什么?

回答

16

我会冒险猜测问题在于父目录“/ home/john”的权限。你的主目录可能是安装的,只有你的用户可以访问(即chmod 700)(你的主目录是chmod 700,不要改变它)。

做这样的事情:

 
mkdir /BSTablespace 
chown postgres:postgres /BSTablespace 

然后

 
CREATE TABLESPACE magdat OWNER maggie LOCATION '/BSTablespace'; 

应该正常工作。

关于用户maggie:数据库用户与OS用户不一样。这并不是说你在两个地方都没有名为maggie的用户 - 但是你需要在数据库和操作系统中为用户创建用户。

+1

谢谢,这就是问题所在。把它放在根上并没有问题。 – 2011-03-07 00:06:05

+0

@gsiems更新你的答案,chown postgres:postgres/Directory。 – Giri 2015-11-03 14:27:36

+0

你如何为单独的驱动器/分区上的文件执行此操作?我一直在试图引用'/ media/username/drive_name/pg_data'目录,该目录的权限设置为类似的'chown'命令和父目录,其权限设置为700(使用单独的用户)。不过,我收到了与原始帖子相同的权限错误。 – 2016-12-01 05:16:12

0

当你在Mac上安装的Postgres,并试图用PgAdmin来创建数据库,表,等你需要知道的是,PgAdmin Utilitypostgres帐户下运行它,当你安装了Postgres数据库创建公用事业。

postgres account_postgres基团的一部分

dscacheutil -q group|grep -i postgres命令将列出与postgres帐户相关联的基团)

最好的做法是创建下根用于容纳一个新的目录(/) (让我们把它叫做/postgresdata然后用postgres:_postgres作为该目录的所有者,使用下面的命令)

sudo chown postgres:_postgres /postgresdata

这应该为你做。 然后,你可以创建一个子目录下/postgresdata每个独特的表空间