我正在关注本教程,该教程解释了如何移动 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
or更改chown
,这使我无法在此共享文件夹上创建具有postgres:postgres
权限的新文件夹。我已经尝试添加postgres
到组vboxsf
和root
(我知道,不建议这样做),但效果不佳。只有当里面的所有文件夹/home/SharedFolder/postgres
都有postgres:postgres
权限。有没有解决这个问题的方法?当我无法控制其目标文件夹(在本例中为 VirtualBox 共享文件夹位置)的权限时,如何更改 PostgreSQL 的数据文件夹位置?
我最终通过将共享文件夹直接安装在 上找到了解决方案
/etc/fstab
,我们可以从那里强制保持我们想要的权限。基本上,我共享了一个没有在主机上激活自动挂载的文件夹:/etc/fstab
然后我在来宾文件中添加了以下行:最后,我将
data_directory
内部变量更改/etc/postgresql/12/main/postgresql.conf
为:只要里面的数据
postgresql
是原始 postgresql 文件夹的副本,它就可以正常工作。