Permissions

如何在使用 VirtualBox 時將 PostgreSQL 數據文件夾更改為共享文件夾位置?

  • February 3, 2022

我正在關注本教程,該教程解釋瞭如何移動 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權限的來賓內部,這些權限不會隨chmodorchown而更改,這使我無法在此共享文件夾上創建具有postgres:postgres權限的新文件夾。我已經嘗試添加postgres到組vboxsfroot(我知道,不建議這樣做),但效果不佳。只有當裡面的所有文件夾/home/SharedFolder/postgres都有postgres:postgres權限。有沒有解決這個問題的方法?當我無法控制其目標文件夾(在本例中為 VirtualBox 共享文件夾位置)的權限時,如何更改 PostgreSQL 的數據文件夾位置?

我最終通過將共享文件夾直接安裝在 上找到了解決方案/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 文件夾的副本,它就可以正常工作。

引用自:https://unix.stackexchange.com/questions/689004