我创建了一个管理员用户:
> 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计算机上。
缺少什么?
答案 0 :(得分:3)
userAdminAnyDatabase
角色允许用户向任何其他数据库授予访问权限(对于自身或任何其他用户),但不会自动授予该管理员用户对所有这些数据库的读/写权限(尽管它可以赋予它们自己)。您可以通过向用户授予其他角色readAnyDatabase
来解决身份验证问题。
db.createUser(
{
user: "test1",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, {role:"readAnyDatabase",db:"admin"} ]
}
)
答案 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,但用户登录不会成功。之前使用userAdminAnyDatabase
和readAnyDatabase
的pwd和角色创建了用户和登录。
答案 2 :(得分:0)
现在只需输入你的机器:
mongo --host (ip number here) --port 27017 -u username -p password --authenticationDatabase admin
并连接到远程数据库。