我正在跟进本教程这解释了如何移动 PostgreSQL 数据文件夹位置。基本上,我只需要将里面的文件复制/var/lib/postgresql
到不同的位置......比如:
sudo rsync -av /var/lib/postgresql /mnt/volume
然后在文件中/etc/postgresql/9.5/main/postgresql.conf
我更改了行data_directory = '/mnt/volume/postgresql/12/main'
...
该解决方案工作得很好,唯一的条件是复制的文件夹需要postgres:postgres
递归地具有权限。
当我将 VirtualBox 与主机和来宾之间的共享文件夹位置一起使用时,问题就开始了,假设我的共享文件夹位置位于 中,/home/SharedFolder
并且我在虚拟机中安装了 PostgreSQL。这些 VirtualBox 共享文件夹始终出现在具有权限的来宾中root:vboxsf
,这些权限不会随chmod
或改变chown
,这使得我无法在此具有postgres:postgres
权限的共享文件夹上创建新文件夹。我尝试过添加postgres
到组中vboxsf
(root
我知道,不建议这样做),但效果不佳。只有当里面的所有文件夹/home/SharedFolder/postgres
都有postgres:postgres
权限时它才起作用。有解决这个问题的方法吗?当我无法控制目标文件夹(在本例中为 VirtualBox 共享文件夹位置)的权限时,如何更改 PostgreSQL 的数据文件夹位置?
答案1
我最终通过直接安装共享文件夹找到了解决方案/etc/fstab
,我们可以从那里强制保留我们想要的权限。基本上,我共享了一个在主机上未激活自动挂载的文件夹:
/etc/fstab
然后我在来宾文件中添加了以下行:
postgresql /home/path/guest/postgresql/ vboxsf uid=postgres,gid=postgres 0 0
最后我将data_directory
里面的变量更改/etc/postgresql/12/main/postgresql.conf
为:
data_directory = '/home/path/guest/postgresql/12/main'
只要里面的数据postgresql
是原始 postgresql 文件夹的副本,它就可以正常工作。