Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有身份验证的MongoDB_Mongodb - Fatal编程技术网

具有身份验证的MongoDB

具有身份验证的MongoDB,mongodb,Mongodb,我正在尝试使用身份验证在本地主机(Windows)上运行MongoDB 要做到这一点,我首先必须添加一个用户,对吗? 为此,我使用以下命令启动守护进程: C:\[…]\mongod.exe -f C:\[…]\mongo.config C:\[…]\mongo.exe --port 20571 127.0.0.1 mongo.config包含以下内容: # Basic database configuration dbpath = C:\[…]\db\ bind_ip = 127.0.0.1

我正在尝试使用身份验证在本地主机(Windows)上运行MongoDB

要做到这一点,我首先必须添加一个用户,对吗? 为此,我使用以下命令启动守护进程:

C:\[…]\mongod.exe -f C:\[…]\mongo.config
C:\[…]\mongo.exe --port 20571 127.0.0.1
mongo.config包含以下内容:

# Basic database configuration
dbpath = C:\[…]\db\
bind_ip = 127.0.0.1
port = 20571

# Security
noauth = true

# Administration & Monitoring
nohttpinterface = true
> db.system.users.find()
{ "_id" : ObjectId("50db155e157524b3d2195278"), "user" : "test", "readOnly" : false, "pwd" : "a6de521abefc2fed4f5876855a3484f5" }
之后,我通过以下命令连接:

C:\[…]\mongod.exe -f C:\[…]\mongo.config
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")
}
为了检查是否一切正常,我执行了以下操作:

# Basic database configuration
dbpath = C:\[…]\db\
bind_ip = 127.0.0.1
port = 20571

# Security
noauth = true

# Administration & Monitoring
nohttpinterface = true
> 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
所以我的问题是:为什么登录失败?


我仍然可以在不提供用户和密码的情况下进行连接,但无法访问任何数据,因为“未经授权的数据库:管理锁类型:-1客户端:127.0.0.1”。这正是我所期望的。

显然,
auth=true
配置没有成功加载。重新启动mongod.exe时是否忘记了-f参数

C:\[…]\mongod.exe -f C:\[…]\mongo.config

正如安德烈·斯法特在对这个问题的评论中告诉我的那样,我犯了两个主要错误

首先,我想我可以将IP作为一个简单的参数传递给客户机。但你必须使用主机来实现这一点。 相反,我认为是IP地址的参数实际上应该是db名称。 因此,连接到服务器的正确命令如下所示:

C:\[…]\mongo.exe --port 20571 -u test -p test --host 127.0.0.1 admin

第二,每个数据库都有用户。因为我只在db“admin”中添加了用户“test”,所以它只在那里工作。

--主机127.0.0.1而不是普通的127.0.0.1,或者不指定主机部分,因为mongo默认情况下将连接到本地主机
C:\[…]\mongo.exe——端口20571-u test-p test——主机127.0.0.1
获取另一个错误:
MongoDB shell版本:2.0.4连接到:127.0.0.1:20571/test-Thu-Dec 27 14:07:06未捕获异常:登录失败异常:登录失败
尝试执行:
使用admin
db.auth('test','test'),另外还有db.addUser(…)由于您添加了用户,但没有授予任何身份验证权限,因此重新启动数据库时使用了
auth=false
,执行了建议的操作,重新启动时使用了
auth=true
,因此无法连接。与我上面的评论中的错误相同。请尝试执行:
使用test
,然后
db.addUser('test',test)
,重新启动mongo实例,并尝试使用
--auth
连接到它配置已成功加载。见我问题下的评论。抱歉,没有将其标记为已解决。