使用rmongodb连接到MongoDB副本集

时间:2012-09-02 06:20:02

标签: r mongodb rmongodb

是否有人能够使用rmongodb连接到MongoDB副本集?无论我如何配置mongo.create,我都会收到身份验证错误,即使通过mongo shell连接时相同的主机/用户名/密码也能正常工作。

我的代码相当于:

> mongo.create(c("rs-1.mysite.com:12345","rs-2.mysite.com:12345"), "rsName", "user", "password", "my_db")
Unable to connect to replset
Authentication failed.

更新

查看副本集中所有节点的日志,当我运行上面的代码时,我没有看到任何尝试进行身份验证。因此,这可能是rmongodb错误。

2 个答案:

答案 0 :(得分:2)

正如Sim所说,rmongodb 1.0.3 does not resolve hostnames

然而,可以从rmongodb连接到副本集,但需要注意几点:

  • 您必须包含所有主机名(如果在种子主机列表中找不到主服务器,则rmongodb将无法连接)
  • 主机名必须以IP格式提供
  • 如果使用管理员用户,则必须首先验证管理员数据库(至少是expected behaviour,但值得注意)
  • 我只能通过提供replSet名称的 来获得连接工作

所以我的工作连接字符串如下所示:

mongo.create(c("192.168.1.123:27017","192.168.1.124:27018","192.168.1.125:27017"),"","user","password", "thedb")

注意:我只用MongoDB 2.2.0进行了测试。

答案 1 :(得分:1)

查看C源代码,rmongodb似乎无法将主机名解析为IP地址。这种方法的唯一方法是将IP地址字符串传递给驱动程序...

通过传递IP地址和端口号,您可以连接到其中一个节点。我仍然无法让rmongodb成功连接到副本集。