0

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

我的代码相当于:

> 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错误。

4

2 回答 2

2

正如 Sim 所指出的,rmongodb 1.0.3 不解析 hostnames

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

  • 您必须包含所有主机名(如果在种子主机列表中找不到主主机,rmongodb 将无法连接)
  • 主机名必须作为 IP 提供
  • 如果使用管理员用户,您必须首先对管理员数据库进行身份验证(这至少是预期的行为,但值得注意)
  • 我只能通过提供 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 测试过这个。

于 2012-09-16T13:46:22.450 回答
1

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

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

于 2012-09-03T05:06:51.990 回答