tencent cloud

文档反馈

连接器订阅 PostgreSQL 时用户权限设置参考

最后更新时间:2024-09-09 21:42:45

    背景

    在使用 CKafka 连接器订阅 Postgresql 数据库时,需要给 连接管理 中配置的 PostgreSQL 用户分配相应的权限。只有拥有相应权限的用户从被允许的主机访问数据库时,才能够进行消息的同步。
    本文从用户权限设置以及主机访问权限设置两方面进行说明。

    用户权限设置

    权限赋予是分 decode 插件的,不同插件需要的权限不一样。

    使用 decoderbufs 插件时用户权限设置

    通过超级用户登录 PostgreSQL,新建一个角色,给角色赋予至少 REPLICATIONLOGIN 两种权限。
    赋予权限:
    CREATE ROLE userName REPLICATION LOGIN;
    说明
    超级用户默认拥有必要的权限,如果是超级用户,大部分无需赋予上面权限。但出于安全考虑不建议使用超级用户。

    使用 pgoutput 插件时用户权限设置

    注意
    pgoutput 插件需要连接管理配置的用户拥有超级用户权限。
    第一步: 验证用户是否拥有超级用户权限
    // 登录postgresql,执行 \\du 命令查看用户权限
    postgres=# \\du
    Role name | List of roles Attributes
    admin | Superuser
    postgres | Superuser, Create role, Create DB, Replication, Bypass RLS
    slave | Replication
    
    // 如果配置的用户不包含 Superuser 权限,需要进行授权
    postgres=# ALTER USER userName WITH SUPERUSER;
    第二步: 用户拥有超级用户权限后,按照以下步骤进行授权 connector pgoutput插件通过订阅 postgresql 节点上的 publication 来获取变更事件,您可以在启动 connector 前手动创建 publication,也可以授予配置的用户创建 publication 的权限。 赋予用户以下权限:ReplicationCREATESELECT
    CREATE ROLE userName REPLICATION LOGIN;
    
    GRANT CREATE ON DATABASE databaseName TO userName;
    
    GRANT SELECT ON TABLE tableName TO userName;
    连接管理中配置的用户需要拥有订阅的表的所有者权限,可通过以下方式授予用户表的所有者权限:
    1. 创建 replication group。
    CREATE ROLE <replication_group>;
    2. 将表的所有者加入到 replication group。
    GRANT REPLICATION_GROUP TO <original_owner>;
    3. 将 connector 用户添加到 replication group。
    GRANT REPLICATION_GROUP TO <replication_user>;
    4. 将表的所有者权限转移到 replication group。
    ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;

    主机访问权限设置(自建集群需要配置)

    您需要配置数据库允许 connector 的主机访问,通过配置 pg_hba.conf 文件来设置相应的策略, pg_hba.conf 详细介绍可参见 pg_hba.conf。配置文件格式如下:
    host databaseName userName 11.163.0.0/16 md5
    host databaseName userName 11.163.0.0/16 trust
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持