在postgresql中创建表空间

时间:2011-03-06 01:45:39

标签: postgresql tablespace chown

我正在尝试在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中的用户,它确实会出现。我有什么想法可能做错了吗?

2 个答案:

答案 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下为每个唯一表空间

创建一个子目录