在postres

时间:2016-11-09 16:18:01

标签: database postgresql permissions ubuntu-16.04

我试图在全新安装的Ubuntu 16.04上在辅助卷上设置postgres表空间。我的主卷只有60GB,我需要恢复一个~55GB的数据库。我使用全新安装的postgresql-9.5。

我让用户postgres成为一个超级管理员,这样它就可以根据需要进行chmod(我知道不推荐这个,但我有点绝望)。

sudo usermod -aG sudo postgres

作为用户postgres,我做了以下。

我已在辅助驱动器上创建了一个文件夹(名为postgres_data),并将所有者设置为postgres。

postgres@Eli:/media/rp3/ExtraDrive1$ ls -lisa
total 28
       2  4 drwxrwxrwx+ 4 root     root      4096 Nov  9 07:46 .
  262146  4 drwxr-x---+ 3 root     root      4096 Nov  9 05:39 ..
      11 16 drwx------  2 root     root     16384 Nov  2 08:14 lost+found
10485761  4 drwxrwxr-x  3 postgres postgres  4096 Nov  9 07:46 postgres_data

然后我创建了一个嵌套文件夹(名为data),也是postgres所有。我这样做是因为我读到用户postgres不仅要拥有我想要表空间的文件夹,还要拥有包含该文件夹的文件夹。

postgres@Eli:/media/rp3/ExtraDrive1/postgres_data$ ls -lisa
total 12
10485761 4 drwxrwxr-x  3 postgres postgres 4096 Nov  9 07:46 .
       2 4 drwxrwxrwx+ 4 root     root     4096 Nov  9 07:46 ..
10485762 4 drwxrwxr-x  2 postgres postgres 4096 Nov  9 07:46 data

我作为用户postgres连接到postgres并尝试创建表空间:

create tablespace mappify_data location '/media/rp3/ExtraDrive1/postgres_data/data';

但是我收到了权限错误:

create tablespace mappify_data location '/media/rp3/ExtraDrive1/postgres_data/data';

我尝试使用chmod 700更改权限,将所有权更改为postgres:postgres with chown,以及创建文件夹作为用户postgres,但都产生相同的结果。

我很感激我能得到的任何建议。我在我的智慧'结束:(

2 个答案:

答案 0 :(得分:1)

你的linux是否运行SELinux?我已经读过问题是SELinux的线程。

我遇到了类似的问题,并最终发现另一个可能的错误原因是用户postgres没有权利进入表空间上面的目录。

因此,在您的情况下,请确保用户postgres可以在目录/ media / rp3 / ExtraDrive1 / postgres_data /.

的层次结构中浏览

答案 1 :(得分:0)

我试图在USB驱动器上设置表空间,但是postgres不知何故没有获得许可。我总是习惯在psql中获得“权限被拒绝”错误消息。问题在于目录权限和遍历user = postgres的父文件夹。最后,这里的答案对我有所帮助..... permission denied in a folder for a user after chown and chmod

root@G41:~# chmod a+x /media/revoltman
root@G41:~# chmod a+x /media/revoltman/PRASHANTH2
root@G41:~# chmod a+x /media/revoltman/PRASHANTH2/dir1

testdb2=# CREATE TABLESPACE tspace2 OWNER postgres LOCATION 
'/media/revoltman/PRASHANTH2/dir1';
 CREATE TABLESPACE