我正在尝试通过身份验证让 MongoDB 在我的本地主机(Windows)上运行。
为此,我首先必须添加一个用户,对吗?我通过使用以下命令启动守护程序来做到这一点:
C:\[…]\mongod.exe -f C:\[…]\mongo.config
mongo.config 包含以下内容:
# Basic database configuration
dbpath = C:\[…]\db\
bind_ip = 127.0.0.1
port = 20571
# Security
noauth = true
# Administration & Monitoring
nohttpinterface = true
之后,我通过以下命令连接:
C:\[…]\mongo.exe --port 20571 127.0.0.1
在那里我添加了一个用户:
> use admin
switched to db admin
> db.addUser('test', 'test')
{ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }
{
"user" : "test",
"readOnly" : false,
"pwd" : "a6de521abefc2fed4f5876855a3484f5",
"_id" : ObjectId("50db155e157524b3d2195278")
}
为了检查一切是否正常,我做了以下事情:
> db.system.users.find()
{ "_id" : ObjectId("50db155e157524b3d2195278"), "user" : "test", "readOnly" : false, "pwd" : "a6de521abefc2fed4f5876855a3484f5" }
这对我来说似乎没问题。
之后,我在 mongo.config 文件中将“noauth = true”更改为“auth = true”并重新启动了守护进程。
现在我希望能够连接用户和密码:
C:\[…]\mongo.exe --port 20571 -u test -p test 127.0.0.1
使用此消息拒绝访问我:
MongoDB shell version: 2.0.4
connecting to: 127.0.0.1:20571/127.0.0.1
Wed Dec 26 16:24:36 uncaught exception: error { "$err" : "bad or malformed command request?", "code" : 13530 }
exception: login failed
所以这是我的问题:为什么登录失败?
我仍然可以在不提供用户名和密码的情况下连接,但无法访问任何数据,因为“未经授权的 db:admin lock type:-1 client:127.0.0.1”。这实际上是我所期望的。