You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Repmgr搭建PostgreSQL副本时data_directory权限冲突问题求助

解决repmgr与PostgreSQL数据目录权限冲突问题

核心原则

PostgreSQL服务必须以postgres用户启动,数据目录的属主必须是postgres:postgres且权限为700,这是PostgreSQL的硬性安全要求,无法绕过。repmgr的访问问题可通过以下方案解决:

步骤1:修正数据目录权限

先将数据目录调整为PostgreSQL要求的状态:

chown -R postgres:postgres /mnt/data/postgres/data
chmod 700 /mnt/data/postgres/data

步骤2:让repmgr正常工作

有两种可靠方案:

方案一:以postgres用户运行repmgr

直接切换到postgres用户执行所有repmgr操作:

su - postgres
# 示例:克隆备库
repmgr standby clone --from=<主库连接信息>

如果用systemd管理repmgr服务,修改服务配置文件(通常为/etc/systemd/system/repmgrd.service),添加或修改:

User=postgres
Group=postgres

然后重载配置并重启服务:

systemctl daemon-reload
systemctl restart repmgrd

方案二:配置sudo允许普通用户以postgres身份执行repmgr

用visudo编辑sudoers配置(避免语法错误),添加如下内容(将your_user替换为你的普通用户名):

your_user ALL=(postgres) NOPASSWD: /usr/bin/repmgr

之后普通用户可通过以下方式执行repmgr命令:

sudo -u postgres repmgr <具体操作>

补充说明

repmgr的核心操作依赖数据库连接(通过conninfo配置的repmgr用户),文件系统层面的访问仅在初始化备库、主库切换等少数场景需要。确保conninfo中的repmgr用户在主备库都拥有LOGIN、REPLICATION以及repmgr数据库的操作权限。

内容的提问来源于stack exchange,提问作者Adcade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:00:48