资讯专栏INFORMATION COLUMN

mongodb用户权限管理最全攻略:用户的创建、查看、删除与修改,mongodb入坑之旅

Wuv1Up / 2166人阅读

摘要:在字段可以指定内置角色和用户定义的角色。超级用户的有两种,或者比前一种多加了对所有数据库的访问仅仅是访问而已。不能用数据库中的用户登录其他数据库。

1、进入mongodb的shell :
mongo
2、切换数据库
use admin
3、创建admin超级管理员用户
指定用户的角色和数据库:
(注意此时添加的用户都只用于admin数据库,而非你存储业务数据的数据库)
(在cmd中敲多行代码时,直接敲回车换行,最后以分号首尾)
db.createUser(  
  { user: "admin",  
    customData:{description:"superuser"},
    pwd: "admin",  
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  
  }  
)  
user字段,为新用户的名字;
pwd字段,用户的密码;
cusomData字段,为任意内容,例如可以为用户全名介绍;
roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色。在roles字段,可以指定内置角色和用户定义的角色。
超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问,仅仅是访问而已)。
db是指定数据库的名字,admin是管理数据库。
不能用admin数据库中的用户登录其他数据库。注:只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中创建的用户。
4、创建一个不受访问限制的超级用户
(跳出三界之外,不在五行之中)
db.createUser(
    {
        user:"root",
        pwd:"pwd",
        roles:["root"]
    }
)
5、创建一个业务数据库管理员用户
(只负责某一个或几个数据库的増查改删)
> db.createUser({
    user:"user001",
    pwd:"123456",
    customData:{
        name:"jim",
        email:"jim@qq.com",
        age:18,
    },
    roles:[
        {role:"readWrite",db:"db001"},
        {role:"readWrite",db:"db002"},
        "read"// 对其他数据库有只读权限,对db001、db002是读写权限
    ]
})

数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root

内部角色:__system

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限


6、查看创建的用户
show users 或 db.system.users.find() 或 db.runCommand({usersInfo:"userName"})
7、修改密码
use admin
db.changeUserPassword("username", "xxx")
8、修改密码和用户信息
db.runCommand(
    {
        updateUser:"username",
        pwd:"xxx",
        customData:{title:"xxx"}
    }
)
9、删除数据库用户
use admin
db.dropUser("user001")
10、创建其他数据管理员
// 登录管理员用户
use admin
db.auth("admin","admin")
// 切换至db001数据库
use db001
// ... 増查改删该数据库专有用户

重要的一步
启用权限验证(别TM的武装了大半天,大门还一直开着,还抱怨我方防御塔怎么一直被摧毁)
mongo --auth

或者修改mongo.conf,最后一行添加

#启用权限访问
auth=true
11、重新启动mongodb
net stop mongodb;
net start mongodb;

和用户管理相关的操作基本都要在admin数据库下运行,要先use admin;

如果在某个单一的数据库下,那只能对当前数据库的权限进行操作;

db.addUser是老版本的操作,现在版本也还能继续使用,创建出来的user是带有root role的超级管理员。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19315.html

相关文章

  • 安装和使用MongoDB

    摘要:下安装和配置安装由于我正好有一个的服务器,所以顺便来试试下安装。下安装其实也很简单,使用对应的包管理器可以比较方便的安装和启动。首先需要安装包,如果使用的话非常简单,右键点击项目,选择管理安装的包,然后搜索并安装即可。 MongoDB是一个著名的NoSQL数据库,顾名思义就是不使用SQL的数据库,目前在很多场景都有使用。如果你不喜欢使用笨拙的各种SQL数据库,可以尝试使用一下Mongo...

    浠ラ箍 评论0 收藏0
  • mongoDB安装操作

    摘要:一下安装数据库进入官网,选择相应的版本下载,安装时默认勾选安装服务和修改一些数据库配置,如已有数据库连接工具,可取消默认勾选的安装。 一、Win下安装数据库 进入mongo官网,选择相应的msi版本下载,安装时默认勾选安装MongoD服务和修改一些数据库配置,如已有数据库连接工具Robo 3T,可取消默认勾选的compass安装。 若启动服务报mp错误,可修改binmongod.cfg...

    zorpan 评论0 收藏0
  • MongoDB ( 五 )高级_管理:用户创建删除修改

    摘要:安装好时,它为我们默认开了一个最高管理权限方便我们管理数据库,我们可以用链接数据库,就是这个原理。这节课我们就学习一下的用户管理。超级账号,超级权限查找用户信息删除用户建权如果正确返回,如果错误返回。。 安装好MongoDB时,它为我们默认开了一个最高管理权限方便我们管理数据库,我们可以用mongo链接数据库,就是这个原理。但在实际开发中并一般不能使用这个用户,因为大家都知道和最高权限...

    linkFly 评论0 收藏0
  • mongoDB初阶系列一:用户权限

    摘要:本文将重点介绍的用户和权限这一部分。结果返回,表示管理员登录成功。接下来,用这个管理员给数据库创建一个普通用户,并指定其权限为。 前言 对于数据库而言,用户和权限是非常重要的一部分,因为这涉及到安全,那么mongoDB的用户和权限是怎么样的呢? 说明 环境说明 本文所用的mongoDB版本是3.6,操作系统是windows。 其他说明 限于篇幅,本文不会介绍数据库从下载到安装的过程,关...

    CastlePeaK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<