数据治理中心 DATAARTS STUDIO-如何增加PostgreSQL、GaussDB数据源额外权限?:解决方案

时间:2025-05-28 09:15:44

解决方案

  1. PostgreSQL使用pgoutput插件进行增量逻辑解码,该插件依赖PUBLICATION

    1. 查看发布的命令。
      SELECT * FROM pg_publication;
    2. 如果名为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
    3. 如果名为dbz_publication的发布存在,要添加参数(PostgreSQL版本小于13可以忽略此操作)。
      ALTER PUBLICATION dbz_publication SET (publish_via_partition_root = true);

  2. PostgreSQL增量位点启动和逻辑复制槽推进都需要查询数据库wal日志信息,需要获取pg_ls_waldir()函数查询权限

    1. 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
      SELECT has_function_privilege('your_user', 'pg_ls_waldir()', 'EXECUTE');
      SELECT pg_ls_waldir() -- 最直观判断是否能执行成功
    2. 如果没有权限,用超级用户(SUPERUSER)或具有 pg_monitor 角色权限的用户(root)授权。
      GRANT pg_monitor TO your_user;      -- 授权
      REVOKE pg_monitor from your_user;   -- 撤权
    3. 重新用作业配置的账号登录到数据库重复步骤1操作确认权限是否生效。

  3. GaussDB 增量位点启动和逻辑复制槽推进都需要查询数据库wal日志信息,需要获取pg_ls_waldir()函数查询权限

    1. 确认作业配置的账号是否有执行pg_ls_waldir()函数的权限。
      SELECT pg_ls_waldir() -- 如果没权限,会报错:“only system/monitor admin can check WAL directory!”
    2. 如果没有权限,用超级用户(SUPERUSER)或具有 monitor 角色权限的用户(root)授权。
      ALTER USER your_user MONADMIN    -- 授权
      ALTER USER your_user NOMONADMIN  -- 撤权
    3. 重新用作业配置的账号登录到数据库重复步骤1操作确认权限是否生效。

support.huaweicloud.com/dataartsstudio_faq/dataartsstudio_01_7600.html