我们在工作中从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连接字符串中,即使您需要从所述表中读取的特殊权限。

最佳答案

此时,如果没有用于复制的超级用户连接,则不能使用bdr。这是逻辑解码所必需的。我们希望在9.6版的bdr中解决这个问题。
在走这条路之前,请仔细考虑您是否真的需要多位大师。您确定带有读取副本的活动/备用设置不足以满足您的需要吗?请仔细阅读关于bdr的限制和其他应用程序开发注意事项的手册部分。

关于database - 使PostgreSQL BDR在没有 super 用户(postgres用户)特权的情况下工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32346768/

10-10 07:30