能够修改订阅端表模式的用户可以以超级用户身份执行任意代码。限制此类表的所有权和TRIGGER权限,仅授予超级用户信任的角色。此外,如果不受信任的用户可以创建表,则仅使用显式列出表的发布。也就是说,只有在超级用户信任发布端或订阅端上允许创建非临时表的每个用户时,才创建FOR ALL TABLES的订阅。
用于复制连接的角色必须具有REPLICATION属性(或者是超级用户)。如果该角色缺少SUPERUSER和BYPASSRLS,发布端的行安全策略可能会被执行。如果该角色不信任所有表的所有者,可在连接字符串中包含options=-crow_security=off;这样如果某个表所有者添加了行安全策略,该设置将导致复制停止而不是执行该策略。必须在pg_hba.conf中配置该角色的访问权限,并且该角色必须具有LOGIN属性。
为了能够复制初始表数据,用于复制连接的角色必须对已发布的表拥有SELECT权限(或者是超级用户)。
要创建发布,用户必须在数据库中拥有CREATE权限。
要向发布添加表,用户必须对该表拥有所有权。要创建自动发布所有表的发布,用户必须是超级用户。
要创建订阅,用户必须是超级用户。
订阅的apply进程将以超级用户的权限在本地数据库上运行。
权限只在复制连接开始时检查一次。不会在读取发布端的每条变更记录时重新检查,也不会在应用每条变更时重新检查。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。