1 创建用户
1.1 创建一个管理员用户
先切换到admin数据库下
> use admin
switched to db admin
然后添加一个全局的管理员用户
> db.addUser("boss","password")
{ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }
{
"user" : "boss",
"readOnly" : false,
"pwd" : "0485d0d52bdf4d383bc2a51ee3d4595d",
"_id" : ObjectId("5850b25a5666c62ade10dce8")
}
现在,boss 管理员 就可以访问所有的数据库了。
重启mongod服务
为MongoDB数据库启动脚本添加--auth
参数
mongod --auth --config ****
启动数据库服务
启动客户端
切换到任意数据库
> use foobar
查看该数据库中的集合
switched to db foobar
> show collections
Wed Dec 14 11:11:27 uncaught exception: error: {
"$err" : "unauthorized db:foobar lock type:-1 client:127.0.0.1",
"code" : 10057
}
发现数据库中的数据无法查看
原因是:没有通过安全认证,是不会向外界输出数据的
因此我们先切换到admin数据库下,使用管理员用户和密码进行用户认证:
> use admin
switched to db admin
> db.auth("boss","password")
1
1.2 为 persons 数据库创建一个用户
同样的,我们可以为单个数据库创建用户
举例:
先切换到 persons 数据库下
> use persons
switched to db persons
为persons数据库添加用户 “heihei”以及密码
> db.addUser("heihei","passwordheihei")
{ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }
{
"user" : "heihei",
"readOnly" : false,
"pwd" : "72bb62f37b11ef622dbdaf6a7edbc3de",
"_id" : ObjectId("5850b5005666c62ade10dce9")
}
>
2.启用用户
2.1切换到需要认证的数据库下
use dbName
2.2使用用户名和密码进行认证
db.auth("名称","密码")
注:在V2.0中,一旦用户通过了A数据库的用户验证,即使切换成了B数据库的用户,后面再使用A数据时,不会要求第二次认证。
3.删除用户
举例:
删除admin数据库中的用户”haha”
切换到admin数据库下:
> use admin
switched to db admin
认证成为管理员用户 boss:
> db.auth("boss","password")
1
移除用户"haha"
> db.removeUser("haha")
检查是否移除成功:
> db.system.users.find()
{ "_id" : ObjectId("5850b25a5666c62ade10dce8"), "user" : "boss", "readOnly" : fa
lse, "pwd" : "0485d0d52bdf4d383bc2a51ee3d4595d" }
>
或者,更暴力的方法:直接从users集合中删除数据(在对应数据库下操作)
db.system.users.remove({user:"USERNAME"});
4.注销用户
4.1 中断连接,关闭shell即可
4.2 运行注销命令
db.runCommand({logout:1})