使PostgreSQL BDR在没有超级用户(postgres用户)权限的情况下工作?

时间:2015-09-02 07:14:13

标签: database postgresql replication postgresql-bdr

我们在工作时从MongoDB切换到Postgres,我正在设置BDR组。

在此步骤中,我会尽可能地查看安全性并锁定。因此,我希望设置一个replication用户(角色)并让BDR将其用于复制内容。当使用可信连接或postgres用户进行身份验证时,我已经让该组愉快地运行。对我来说似乎不是100%安全,我特别不喜欢postgres用户的密码在bdr.bdr_nodes的DSN连接字符串中以明文形式出现。所以我尝试使用这个replication用户。

即,例如在pg_hba.conf

hostssl appdb,replication replication 172.17.1.2 md5

匹配的DSN连接字符串

host=172.17.1.1 dbname=appdb user=replication password=secret

发布bdr.bdr_group_create

时,以下错误说明了此方法的问题
ERROR:  local dsn does not have superuser rights
DETAIL:  The dsn 'host=172.17.1.1 dbname=appdb user=replication password=secret' connects successfully but does not grant superuser rights

这就是我有点困惑的地方。 BDR真的需要超级用户权限进行复制吗?或者我可以授予我replication角色的特定权限,使其能够在没有全能的情况下开展业务吗?

也许只是我是偏执狂,但我觉得postgres用户应该只用于系统管理员的东西,并且它的密码绝对不应该出现在表格中在明文DSN连接字符串中,即使您需要特殊权限才能从所述表中读取。

1 个答案:

答案 0 :(得分:2)

此时,如果没有超级用户连接进行复制,则无法使用BDR。它是逻辑解码所必需的。我们希望在9.6版的BDR中解决这个问题。

在走这条路之前,请仔细考虑非常关于你是否真的需要多主人。您确定具有只读副本的活动/待机设置不足以满足您的需求吗?请仔细阅读有关BDR限制和其他应用程序开发注意事项的手册部分。

相关问题