如何为 mongo C 驱动程序构造带有用户名密码的 URI。

How to construct a URI with username password for mongo C driver.

我正在使用 mongo 3.0.8。我有一个经过身份验证的用户管理员,密码为 admin。我可以按如下方式连接到 mongo shell。

mongo admin -u amdin -p amdin

但是,我尝试使用以下 C 代码进行连接。这给了我一个错误

WARNING: client: Failed to connect to: ipv4 127.0.0.1:27017, error: 111, Connection refused

char URI[256];
snprintf(URI,256,"mongodb://admin:admin@127.0.0.1:27017/?authSource=admin");
mongoc_client_t *client = mongoc_client_new(URI);

错误 error: 111, Connection refused 是网络错误。 您的 URI 希望找到侦听同一台机器 (127.0.0.1) 端口 27017 的服务器。可能的问题:

  • 服务器没有运行
  • 服务器不在该端口上
  • 服务器绑定到本机"real ip address"。
  • 有本地防火墙(例如 iptables)阻止访问
  • 可能是 SELinux 问题?

如果这是一个 Linux 框,这些命令可能有助于诊断:

netstat -an -A inet | grep LISTEN
/sbin/iptables -L