MongoDB 3.2 身份验证失败 [英] MongoDB 3.2 authentication failed
问题描述
我使用以下命令集创建了一个用户.这应该在 admin
db 和我的目标 db (c2d) 中创建用户:
I create a user with the following set of commands. This should create user in both admin
db as well as my target db (c2d):
# mongo 127.0.0.1:27017
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/test
> use admin
switched to db admin
> show collections
system.users
system.version
> db.system.users.find()
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]})
Successfully added user: {
"user" : "cd2",
"roles" : [
{
"role" : "dbOwner",
"db" : "c2d"
}
]
}
> db.system.users.find()
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
> use c2d
switched to db c2d
> db.createUser({user:"cd2", pwd:"cd2", roles:[{role:"dbOwner", db: "c2d"}]})
Successfully added user: {
"user" : "cd2",
"roles" : [
{
"role" : "dbOwner",
"db" : "c2d"
}
]
}
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.cd2", "user" : "cd2", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "4g6t9kC+godz7k6QQOfD+A==", "storedKey" : "m3tDZBQDU2Tlb1lIjLGyTHmr2QQ=", "serverKey" : "GSA4OXSod1s8mBuZBtfmXq2tlTo=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
{ "_id" : "c2d.cd2", "user" : "cd2", "db" : "c2d", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "vnMjnjfykVQS8ujQXeWaYw==", "storedKey" : "OYXivkmIwuTavlwTGfjrspT6j2E=", "serverKey" : "lw8xqzAaW8V4IQ9wOmQrG2VSp88=" } }, "roles" : [ { "role" : "dbOwner", "db" : "c2d" } ] }
如果我尝试登录,则会收到一条错误消息:
If I try to login, I'm welcomed with an error message:
# mongo 127.0.0.1:27017/c2d -u c2d -p c2d
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/c2d
2016-05-22T10:35:41.862+0100 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed
然后我在 conf 文件中启用安全功能并重新启动服务器:
Then I enable security features in the conf file and restart the server:
security:
authorization: enabled
错误依旧:
# mongo 127.0.0.1:27017/c2d -u c2d -p c2d
MongoDB shell version: 3.2.6-29-g5c19788
connecting to: 127.0.0.1:27017/c2d
2016-05-22T10:37:43.713+0100 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed
推荐答案
好吧,您需要按顺序执行几个步骤才能成功创建用户.
Well, you'll need to take couple of steps in sequence to create user successfully.
首先,您需要创建一个管理员用户.我更喜欢创建超级用户.
First of all, you need to create an administrator user. I prefer creating super user.
> use admin
> db.createUser({user: "root", pwd: "123456", roles:["root"]})
重新启动您的 MongoDB 服务器并使用 --auth
标志启用身份验证.
Restart your MongoDB server and enable authentication with --auth
flag.
> mongod --auth --port 27017 --dbpath /var/lib/mongodb
一旦您的服务器启动,请以管理员身份连接到它
Once your server is up, connect to it as administrator
<代码>>mongo <主机:端口>-u "root" -p "123456" --authenticationDatabase "admin"
连接后,创建普通用户.假设您的用户数据库名称是 cd2
.
Once you are connected, create normal user. Assuming your user database name is cd2
.
> use cd2
> db.createUser({user: "cd2", pwd: "cd2", roles:["dbOwner"]})
如果您看到成功消息,请断开与 mongo shell 的连接并与新用户重新连接凭据.
If you see success messsage, disconnect from mongo shell and reconnect with new user credentials.
> mongo <host:port>/cd2 -u "cd2" -p "cd2"
这篇关于MongoDB 3.2 身份验证失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!