我试图在全新安装的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,但都产生相同的结果。
我很感激我能得到的任何建议。我在我的智慧'结束:(
答案 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