数据治理中心 DATAARTS STUDIO-如何增加PostgreSQL、GaussDB数据源额外权限?:解决方案
时间:2025-05-28 09:15:44
解决方案
- PostgreSQL使用pgoutput插件进行增量逻辑解码,该插件依赖PUBLICATION。
- 查看发布的命令。
SELECT * FROM pg_publication;
- 如果名为dbz_publication的发布不存在,在启动migration作业后会自动用作业配置的账号创建publication,因此要提前给账号授权,或使用有权限的账号创建发布。
授权创建发布的命令:
GRANT CREATE ON DATABASE "your_databasename" TO "your_user";
创建发布的命令(如果不授权,需要手动创建发布):
-- PostgreSQL版本大于等于13 CREATE PUBLICATION dbz_publication FOR ALL TABLES WITH (publish_via_partition_root = true) -- PostgreSQL版本小于13 CREATE PUBLICATION dbz_publication FOR ALL TABLES
- 如果名为dbz_publication的发布存在,要添加参数(PostgreSQL版本小于13可以忽略此操作)。
ALTER PUBLICATION dbz_publication SET (publish_via_partition_root = true);
- 查看发布的命令。
- PostgreSQL增量位点启动和逻辑复制槽推进都需要查询数据库wal日志信息,需要获取pg_ls_waldir()函数查询权限。
- 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
SELECT has_function_privilege('your_user', 'pg_ls_waldir()', 'EXECUTE'); SELECT pg_ls_waldir() -- 最直观判断是否能执行成功
- 如果没有权限,用超级用户(SUPERUSER)或具有 pg_monitor 角色权限的用户(root)授权。
GRANT pg_monitor TO your_user; -- 授权 REVOKE pg_monitor from your_user; -- 撤权
- 重新用作业配置的账号登录到数据库重复步骤1操作确认权限是否生效。
- 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
- GaussDB 增量位点启动和逻辑复制槽推进都需要查询数据库wal日志信息,需要获取pg_ls_waldir()函数查询权限。
- 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
SELECT pg_ls_waldir() -- 如果没权限,会报错:“only system/monitor admin can check WAL directory!”
- 如果没有权限,用超级用户(SUPERUSER)或具有 monitor 角色权限的用户(root)授权。
ALTER USER your_user MONADMIN -- 授权 ALTER USER your_user NOMONADMIN -- 撤权
- 重新用作业配置的账号登录到数据库重复步骤1操作确认权限是否生效。
- 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
support.huaweicloud.com/dataartsstudio_faq/dataartsstudio_01_7600.html