Mongo DB 3.0.7上的远程和本地身份验证失败(安装在Amazon EC2上)

时间:2015-10-27 15:55:35

标签: mongodb ubuntu amazon-web-services amazon-ec2

我创建了一个管理员用户:

> db.createUser(
... {
... user: "administrator",
... pwd: "password",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
    "user" : "administrator",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

现在我正在尝试使用它来输入:

ubuntu@***ip number***:/etc$ sudo mongo --port 27017 -u administrator -p password --authenticationDatabase admin

这就是回报:

MongoDB shell version: 3.0.7
connecting to: 127.0.0.1:27017/test
2015-10-27T15:33:25.670+0000 E QUERY    Error: 18 Authentication failed.
    at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
    at (auth):6:8
    at (auth):7:2 at src/mongo/shell/db.js:1271

使用Ubuntu将Mongo安装到Amazon EC2计算机上。

缺少什么?

3 个答案:

答案 0 :(得分:3)

userAdminAnyDatabase角色允许用户向任何其他数据库授予访问权限(对于自身或任何其他用户),但不会自动授予该管理员用户对所有这些数据库的读/写权限(尽管它可以赋予它们自己)。您可以通过向用户授予其他角色readAnyDatabase来解决身份验证问题。

db.createUser(
{
user: "test1",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, {role:"readAnyDatabase",db:"admin"} ]
}
)

Link to MongoDB docs: Create a User Administrator

答案 1 :(得分:0)

更改mongod.conf(停止第一个mongod服务。例如:sudo service mongod stop):

bindIp: 127.0.0.1

有:

bindIp: 0.0.0.0

现在你可以重启(例如:sudo service mongod start

现在您可以输入正常输入mongo的同一台机器,但是,例如,如果您尝试使用robomongo gui进行测试成功之前的ip,但用户登录不会成功。之前使用userAdminAnyDatabasereadAnyDatabase的pwd和角色创建了用户和登录。

答案 2 :(得分:0)

现在只需输入你的机器:

mongo --host (ip number here) --port 27017 -u username -p password --authenticationDatabase admin

并连接到远程数据库。