我开始将机器 A (Debian Stretch) 上的 docker 主机的内容迁移到机器 B (Debian Buster)。我使用 rsync 复制了我的卷 /var/lib/openproject{pgdata, static}。现在看来,机器 B 上的权限是错误的。
docker logs 显示以下内容:
Starting PostgreSQL 9.6 database server: mainError: Config owner (postgres:102) and data owner (app:1000)
do not match, and config owner is not root ... failed!
在这种情况下,正确的权限是什么?谢谢您的回答。
答案1
我检查了我的docker postgresql,看起来像这样
ls -l /var/lib/postgresql/
drwx------ 19 postgres root 4096 Aug 23 03:07 data
以及数据目录内
-rw------- 1 postgres postgres 3 May 17 02:05 PG_VERSION
drwx------ 9 postgres postgres 4096 Jul 9 03:26 base
drwx------ 2 postgres postgres 4096 Aug 23 03:08 global
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_commit_ts
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_dynshmem
-rw------- 1 postgres postgres 4535 May 17 02:05 pg_hba.conf
-rw------- 1 postgres postgres 1636 May 17 02:05 pg_ident.conf
drwx------ 4 postgres postgres 4096 Aug 24 08:28 pg_logical
drwx------ 4 postgres postgres 4096 May 17 02:05 pg_multixact
drwx------ 2 postgres postgres 4096 Aug 23 03:07 pg_notify
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_replslot
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_serial
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_snapshots
drwx------ 2 postgres postgres 4096 Aug 23 03:07 pg_stat
drwx------ 2 postgres postgres 4096 Aug 24 08:30 pg_stat_tmp
drwx------ 2 postgres postgres 4096 Aug 23 04:47 pg_subtrans
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_tblspc
drwx------ 2 postgres postgres 4096 May 17 02:05 pg_twophase
drwx------ 3 postgres postgres 4096 Aug 24 08:03 pg_wal
drwx------ 2 postgres postgres 4096 Aug 6 19:21 pg_xact
-rw------- 1 postgres postgres 88 May 17 02:05 postgresql.auto.conf
-rw------- 1 postgres postgres 23841 May 17 02:05 postgresql.conf
-rw------- 1 postgres postgres 24 Aug 23 03:07 postmaster.opts
-rw------- 1 postgres postgres 94 Aug 23 03:07 postmaster.pid
所以基本上你必须改变所有权
chow postgres:root /var/lib/postgresql/
chow -R postgres:postgres /var/lib/postgresql/data
以及权限
find /var/lib/postgresql/ -type d -exec chmod 700 {} \;
find /var/lib/postgresql/ -type f -exec chmod 600 {} \;