文档首页/ 数据复制服务 DRS/ 常见问题/ 权限管理/ DRS要求的PostgreSQL权限有哪些
更新时间:2024-07-11 GMT+08:00

DRS要求的PostgreSQL权限有哪些

DRS在同步过程中,对账号有一定的权限要求,本章节主要介绍PostgreSQL引擎的权限要求。

权限要求

  • 源和目标库的连接账号需要具有登录权限,如果没有该账号,可以通过如下方式创建,以用户ptd为例。

    参考语句:CREATE USER ptd PASSWORD 'password';

  • DRS实时同步功能的权限要求,表1 权限要求中以ptd为例提供参考语句。
    表1 权限要求及参考语句

    同步模式

    源数据库

    目标数据库

    全量同步

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的SELECT权限(用于同步用户的密码)。

    参考语句:

    GRANT CONNECT ON DATABASE database_name TO ptd;

    GRANT USAGE ON SCHEMA schema_name TO ptd;

    GRANT SELECT ON TABLE table_name TO ptd;

    GRANT SELECT ON SEQUENCE sequence_name TO ptd;

    GRANT SELECT ON pg_catalog.pg_authid TO ptd;

    库级同步权限要求:

    • 如果目标库不是postgres,需要具有CREATEDB权限。

      参考语句:ALTER ROLE ptd WITH CREATEDB;

    • 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。

      参考语句:

      GRANT CONNECT, CREATE ON DATABASE postgres TO ptd;

      GRANT USAGE, CREATE ON SCHEMA public TO ptd;

    表级同步权限要求:

    • 如果需要同步库,需要具有CREATEDB权限。

      参考语句:

      ALTER ROLE ptd WITH CREATEDB;

    • 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。

      参考语句:

      GRANT CONNECT, CREATE ON DATABASE database_name TO ptd;

    • 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。

      参考语句:

      GRANT USAGE, CREATE ON SCHEMA schema_name TO ptd;

    同步用户权限要求:

    需要具有CREATEROLE权限。

    参考语句:

    ALTER USER ptd CREATEROLE;

    全量+增量同步

    • 数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的SELECT权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限(用于对无主键表的短暂加锁,保证迁移后数据一致)。

      参考语句:

      GRANT CONNECT ON DATABASE database_name TO ptd;

      GRANT USAGE ON SCHEMA schema_name TO ptd;

      GRANT SELECT ON TABLE table_name TO ptd;

      GRANT SELECT ON SEQUENCE sequence_name TO ptd;

      GRANT SELECT ON pg_catalog.pg_authid TO ptd;

      GRANT UPDATE, DELETE, TRUNCATE ON TABLE table_name TO ptd;

    • REPLICATION连接权限。

      添加方法:

      1. 在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host replication <src_user_name> <drs_instance_ip>/32 <认证方式>”;

        认证方式可参考PostgreSQL官方文档pg_hba.conf文件配置,常见的认证方式有md5、scram-sha-256等。

      2. 在源库使用SUPERUSER用户执行语句“select pg_reload_conf();”或重启数据库实例使设置生效。