MongoDB用户管理

1.MongoDB初始环境下是无用户无认证的
直接使用"mongo"客户端,不带任何参数就能登录并随意访问控制任何数据库。

2. 怎么开启用户认证?
开启认证前,首先得添加管理员用户。
为啥?一旦开启了认证,连一个用户都没有,没法登录

3. 怎样添加管理员用户
我们需要添加两种角色的管理员

  • 用户管理员:负责增删改用户。(只管用户,不管数据)
  • 数据库管理员:拥有任何数据库的读写权限 (只管数据,不管用户)

(1) 添加“用户管理员”

use admin

db.createUser(
  {
    user: "useradmin",
    pwd: "useradmin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

(2)添加"数据库管理员"

use admin

db.createUser(
  {
    user: "dbadmin",
    pwd: "dbadmin",
    roles: [ 
      { role : "dbAdminAnyDatabase", db : "admin"},
      { role : "readWriteAnyDatabase", db : "admin"},
      { role : "clusterAdmin", db : "admin"} 
    ]
  }
)

注:MongoDB 2.6 版本新增加了一种管理员角色: “root”
这是一个超级管理员角色,涵盖以下角色:readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore, and backup
因而也可以直接添加"root"角色管理员,以替代上文的两个角色管理员。
添加"root"角色管理员命令示例:

use admin

db.createUser(
    {
        user: "root",
        pwd: "root",
        roles: [{role : "root", db : "admin"}]
    }
)

4.开启MongoDB认证
(1) 在mongod的启动配置文件中加入:“auth = true”
(2) 重启mongodb生效
在这里插入图片描述
5. 启用认证后的登录

mongo -u useradmin -p useradmin 127.0.0.1/admin

注意:每一个用户都从属于某个数据库,必须在所属的数据库下认证才会成功。
比如上文中我们添加的"useradmin"用户是属于"admin"数据库,如果用"test"数据库认证就会失败
在这里插入图片描述
6. 添加普通用户
上文说过,"用户管理员”只管用户,不管数据。
我们通过"用户管理员"登录后,创建一个普通用户:“mydb1_user1”,
用于读写"mydb1"数据库

use mydb1

db.createUser(
  {
    user : "mydb1_user1",
    pwd : "mydb1_user1",   
    roles : [
        {role : "readWrite", db : "mydb1"}
    ]
  }
)

7. 查看当前数据库下有哪些用户

show users

8. 查看所有用户

use admin
db.system.users.find()

9. 删除用户

db.dropUser('mydb1_user1')

10.修改用户密码

db.changeUserPassword('root','password123');  

11. 其他
(1) 创建一个用户,既可以读写"mydb1",又可以读写"mydb2"

use mydb1

db.createUser(
  {
    user : "mydb1_user2",
    pwd : "mydb1_user2",   
    roles : [
        {role : "readWrite", db : "mydb1"},
        {role : "readWrite", db : "mydb2"}
    ]
  }
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duanbeibei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值