从远程主机连接到MongoDB时出现身份验证错误

时间:2015-08-15 15:33:00

标签: mongodb

MongoDB的新手,试图找出权限的工作方式。

我的PHP代码连接到Mongo就好了:

$mongo = new MongoClient('mongodb://admin:password@localhost');
return $mongo->selectDB('admin');

我也可以从shell中做到这一点:

# mongo -u admin -p password admin
MongoDB shell version: 3.0.5
connecting to: admin

但是,尝试使用相同的凭据(在本例中为Windows)从其他远程主机连接到Mongo会导致:

  

无法使用MONGODB-CR机制对admin @ admin进行身份验证:用户文档中缺少AuthenticationFailed MONGODB-CR凭据

我正在尝试配置 Robomongo 管理工具来管理MongoDB实例。

显然,我通过更新IP绑定指令允许连接到Mongo服务器。

它看起来像" admin"不允许用户从localhost以外的主机连接--MySQL具有完全相同的参数。

问题:我如何允许 admin 用户从框外连接?

谢谢!

1 个答案:

答案 0 :(得分:0)

所以这就是我必须做的事情。

  1. 删除所有现有管理员用户。

  2. 要配置身份验证机制,请在没有授权的情况下启动mongodb:“enabled”。然后:

  3.   

    mongo admin

    来自mongo shell:

    var schema = db.system.version.findOne({"_id" : "authSchema"})
    schema.currentVersion = 3
    db.system.version.save(schema)
    db.createUser(
    {
      user: "admin",
      pwd: "password",
      roles: [ "root" ]
    }
    

    并使用授权重新启动:“已启用”。