16.用户管理、安全认证

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})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值