内建角色,具体参考:https://docs.mongodb.com/manual/reference/built-in-roles
阅读:允许用户读取指定数据库
读写:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建,删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建,删除和管理用户
clusterAdmin:只在管理数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在管理数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在管理数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在管理数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在管理数据库中可用,赋予用户所有数据库的dbAdmin权限。
根:只在管理数据库中可用。超级账号,超级权限
用户文件在管理库下的system.users表里,默认MongoDB没有访问密码,不太安全
1。添加数据库管理员用户adminUser和普通用户herrywen
<代码> mongo——端口27017 使用管理 db.createUser ( { 用户:“adminUser”, pwd:“adminPass”, 角色:[{角色:“userAdminAnyDatabase”, db:“admin”}] } ) 使用herrywen db.createUser ( { 用户:“herrywen”, pwd:“herrywen”, 角色:[{角色:“读写”,db: " herrywen "}, {角色:“读”,db:“admin”}] } )代码>
2。在192.168.255.134增加配置文件,开启验证
<代码>猫/etc/mongod.conf 安全: 授权:启用代码>
3。重启mongdb服务
<代码> systemctl重启mongdb 代码>
4。测试看下是否可以访问了
<代码> [root@worker1 ~] # mongo——主机192.168.255.134端口27017 - u adminUser - p adminPass——authenticationDatabase“admin” MongoDB shell版本v4.2.1 连接mongodb://192.168.255.134:27017 ? authSource=admin&压缩机=disabled& gssapiServiceName=mongodb 会话隐含的会话:{" id ": UUID (f5114890-0b2e-43a2-8a60-a8b265e68a44)} MongoDB服务器版本:4.2.1。准备 MongoDB企业比;使用管理; 转向数据库管理 MongoDB企业比;显示集合; system.users system.version MongoDB企业比;退出 再见代码>
5。如果直接登陆,在切换管理库时,提示没有任何权限。需要使用db.auth()进行验证
<代码> [root@worker1 ~] # mongo——主机192.168.255.134端口27017 MongoDB shell版本v4.2.1 连接mongodb://192.168.255.134:27017 ?压缩机=disabled& gssapiServiceName=mongodb 会话隐含的会话:{" id ": UUID (“9 bcb1b37 - 7 - cfa - 4等于off - 8947 - 6 - d633eee01be ")} MongoDB服务器版本:4.2.1。准备 MongoDB企业比;使用管理 转向数据库管理 MongoDB企业比;显示集合; 警告:无法运行listCollections,试图通过解析connectionStatus近似集合的名字 MongoDB企业比;显示集合; 警告:无法运行listCollections,试图通过解析connectionStatus近似集合的名字 MongoDB企业比;db.auth (“adminUser”、“adminPass”) 1 MongoDB企业比;显示集合; system.users system.version 代码>
6。直接登陆herrywen库
<代码> [root@worker1 ~] # mongo——主机192.168.255.134端口27017 - u herrywen - p herrywen——authenticationDatabase“herrywen” MongoDB shell版本v4.2.1 连接mongodb://192.168.255.134:27017 ? authSource=herrywen&压缩机=disabled& gssapiServiceName=mongodb 会话隐含的会话:{" id ": UUID (“9 d906997 - 681 - 43 - b4 b541 dbe5d197cd1f ")} MongoDB服务器版本:4.2.1。准备 MongoDB企业比;使用herrywen 切换到db herrywen MongoDB企业比;显示集合; MongoDB企业比;db.test3。插入({标题:“MongoDB”, …描述:“你好,世界”, …:“herrywen”, …url:“http://www.51cto.com”, …标签:[“mongodb”、“数据库”、“NoSQL”), …喜欢:100}) WriteResult ({“nInserted”: 1}) MongoDB企业比;显示集合;代码>
7。给adminUser用户增加对herrywen库的读写权限
<代码>使用管理 db。grantRolesToUser (“adminUser”,[{角色:“读写”,db:“herrywen”})) .pretty db.system.users.find () ();代码>
8。给herrywen用户增加herrywen1库的读写权限和管理数据库的读权限
<代码> herrywen使用 db。grantRolesToUser (“herrywen”,[{角色:“读写”,db:“herrywen1”},{角色:“读”,db:“admin”}])mongodb的访问控制