0

我在 ubuntu 14.04 上启动了mongod服务器并作为服务运行,我启动了mongo shell 并创建了一个用户。

db.createUser(   {
    user: "testAdmin",
    pwd: "12345678",
    roles: [ { role: "userAdmin", db: "students" } ]  
} )

之后,我更改了编辑mongod.conf并设置auth=true并重新启动了mongod服务器作为服务。

毕竟,当我想用​​用户testAdmin启动mongo shell时。

mongo -u testAdmin -p 12345678 --authenticationDatabase students

但我无法登录,这给了我错误。

MongoDB shell version: 3.2.10
connecting to: 127.0.0.1:25018/test
2016-10-13T05:56:27.500+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:25018, reason: errno:111 Connection refused
2016-10-13T05:56:27.500+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:25018, connection attempt failed :

首先,当我指定数据库学生时,为什么要尝试连接到测试?其次,我知道 mongodb 中的 userAdmin 角色不适用于使用 userAdmin 在数据库中读/写我只能管理用户角色。但是要管理其他用户,我仍然需要登录 mongo shell。

当我在 mongod.conf 中关闭身份验证时它正在工作,所以其他事情都很好,只有身份验证不起作用。

4

1 回答 1

0

首先,当我指定数据库学生时,为什么要尝试连接测试?

您没有在此处指定要连接的数据库(学生)。

用于指定创建用户的--authenticationDatabase数据库以及用于身份验证过程的数据库。

您还应该将学生指定为要连接的数据库选项。如果省略它,shell 会自动尝试连接到test数据库:

mongo students -u testAdmin -p 12345678 --authenticationDatabase students

请注意在students之后添加mongo

这是假设用户已在students数据库中创建(而不是admin或其他)。请注意,在这种情况下,其中的db声明role是多余的:

roles: [ { role: "userAdmin", db: "students" } ]

也可以指定为:

roles: [ "userAdmin" ]

于 2016-10-13T08:45:50.363 回答