DRS要求的PostgreSQL权限有哪些
DRS在同步过程中,对账号有一定的权限要求,本章节主要介绍PostgreSQL引擎的权限要求。
权限要求
- 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,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。
GRANT CONNECT, CREATE ON DATABASE postgres TO ptd;
GRANT USAGE, CREATE ON SCHEMA public TO ptd;
表级同步权限要求:
- 如果需要同步模式,需要具有模式所在库的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连接权限。
- 在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host replication <src_user_name> <drs_instance_ip>/32 <认证方式>”;
认证方式可参考PostgreSQL官方文档pg_hba.conf文件配置,常见的认证方式有md5、scram-sha-256等。
- 在源库使用SUPERUSER用户执行语句“select pg_reload_conf();”或重启数据库实例使设置生效。
- 在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host replication <src_user_name> <drs_instance_ip>/32 <认证方式>”;
- 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。