mongodb带用户权限操作

来源:互联网 发布:linux建立用户和组 编辑:程序博客网 时间:2024/05/28 06:06

1. 启动Mongodb服务

mongod --dbpath D:\mongodb\db  --auth 

或 

mongod --dbpath D:\mongodb\db -logpath D:\mongodb\log\mongo_log.txt  -auth

注:带上 “--auth “

2. 创建用户

步骤:

(1) 使用不带权限的方式启动mongodb服务,即:mongod --dbpath D:\mongodb\db

(2)  切到 admin 数据库(命令:use admin),查看当前库用户信息(命令:show users)

(3) 创建超级用户,命令:db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]}) 

(4) 重启mongodb服务(使用待权限方式重启)

(5) 切到 admin 数据库(命令:use admin),并执行授权命令:db.auth("admin","admin"),返回结果为 1,标识授权成功,可以执行相关操作,或者授权失败

(6) 切到 需要使用的数据库(如:test),在test数据库下创建用户: db.createUser({user:"testUser",pwd:"testPwd",roles:[{role:"read",db:"test"}]})

(7) 数据库test的用户创建完成

注:

(1) 首先需要在 admin 数据库下创建超级用户(如果已存在,则不需要再次创建)

(2) 为自定义数据库创建用户时,需要在带权限mongodb服务启动下,由admin数据库下的管理员用户创建,即先在admin数据库下管理员用户授权,再切到自定义数据库,创建用户

(3) db.createUser({user:"testUser",pwd:"testPwd",roles:[{role:"read",db:"test"}]}) 中的db中的值是自定义数据库名称


3. 显示数据库用户信息:show users


4. 删除指定用户:db.dropUser("用户名")


5. 用户角色说明

数据库用户角色:read、readWrite; 
数据库管理角色:dbAdmin、dbOwner、userAdmin; 
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
备份恢复角色:backup、restore; 
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 
内部角色:__system 
角色说明: 
Read:允许用户读取指定数据库 
readWrite:允许用户读写指定数据库 
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile 
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 
root:只在admin数据库中可用。超级账号,超级权限



除了db.createUser(),下面几个函数也是常用的:
获得数据库的所有用户权限信息:db.getUsers()
获得某个用户的权限信息:db.getUser()
创建角色: db.createRole()
更新角色:db.updateRole()
删除角色:db.dropRole()
获得某个角色信息:db.getRole()
删除用户:db.dropUser()
删除所有用户:db.dropAllUsers()
将一个角色赋予给用户:db.grantRolesToUser()
撤销某个用户的某个角色权限:db.revokeRolesFromUser()
更改密码:db.changeUserPassword()


原创粉丝点击