2

我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。

在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个replication用户(角色)并让 BDR 将其用于其复制内容。当使用受信任的连接或postgres用户进行身份验证时,我已经让该组愉快地运行。对我来说,两者似乎都不是 100% 安全的,而且我特别不喜欢 postgres 用户的密码如何以明文形式出现在bdr.bdr_nodes. 所以我尝试改用这个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 连接字符串的表中,即使您需要特殊权限从所述表中读取。

4

1 回答 1

2

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

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

于 2015-09-02T07:22:54.070 回答