千家信息网

MongoDB权限管理二

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,mongodb配置文件如下:[root@localhost ~]# cat /usr/local/mongodb/mongod.cnf bind_ip = 0.0.0.0logpath=/data/m
千家信息网最后更新 2025年12月02日MongoDB权限管理二

mongodb配置文件如下:

[root@localhost ~]# cat /usr/local/mongodb/mongod.cnf bind_ip = 0.0.0.0logpath=/data/mongodb/logs/mongodb.loglogappend = truefork = true#auth = trueport = 6068dbpath=/data/mongodb/datapidfilepath=/data/mongodb/mongod.pid

root超级管理员权限
关闭mongod.cnf配置文件参数:auth
直接登录mongo,设置登录密码:

mongo --host 127.0.0.1 --port 6068use admindb.createUser({user: 'root', pwd:'TdLLQd689', roles:[{role: 'root', db: 'admin'}]});db.auth("root","TdLLQSdH689")

关闭mongod
开启mongod.cnf配置文件参数:auth =true

mongo --host 127.0.0.1 --port 6068use admindb.auth("root","TdLLQH689")

创建测试库dbtest001,以及测试用户testuser 对dbtest001库有读写的权限

use dbtest001db.createUser({user:"testuser",pwd:"testuser123",roles:[{role:"readWrite",db:"dbtest001"}]})创建测试用户testuser 对dbtest001库有读的权限:db.createUser({user:"testuser01",pwd:"testuser123",roles:[{role:"read",db:"dbtest001"}]})

给测试库插入一个集合chenji(所谓的表chenji):

db.chenji.insert({"name":"小花","年级":"二年级","性别":"男","爱好":"学习"})WriteResult({ "nInserted" : 1 })> db.chenji.insert({"name":"花花","年级":"一年级","性别":"女","爱好":"唱歌"})WriteResult({ "nInserted" : 1 })> db.chenji.insert({"name":"小花","年级":"三年级","性别":"女","爱好":"打球"})WriteResult({ "nInserted" : 1 })> db.chenji.insert({"name":"小花","年级":"四年级","性别":"女","爱好":"画画"})WriteResult({ "nInserted" : 1 })

查看当前库下的用户:

db.getUsers() 或者show users> show users{    "_id" : "dbtest001.testuser",    "userId" : UUID("f275fad5-ac4f-4dfa-aea6-af34ed93c3e1"),    "user" : "testuser",    "db" : "dbtest001",    "roles" : [        {            "role" : "readWrite",            "db" : "dbtest001"        }    ]}

查看当前库下某个用户的权限:

db.getUser("testuser")db.getUser("testuser01")

创建角色: db.createRole()
更新角色: db.updateRole()
删除角色: db.dropRole()

获得某个角色信息: db.getRole()

> db.getRole("read"){    "role" : "read",    "db" : "dbtest001",    "isBuiltin" : true,    "roles" : [ ],    "inheritedRoles" : [ ]}> db.getRole("readWrite"){    "role" : "readWrite",    "db" : "dbtest001",    "isBuiltin" : true,    "roles" : [ ],    "inheritedRoles" : [ ]}

删除所有用户: db.dropAllUsers()

删除用户:db.dropUsers("xxxxxx")

db.dropUser("testuser01")
true

将一个角色赋予读写给用户: db.grantRolesToUser()

use dbtest001db.grantRolesToUser('testuser01',[ { role : 'readWrite', db : 'dbtest001' } ] )

撤销某个用户的某个角色权限: db.revokeRolesFromUser()

> db.getUser("testuser01"){    "_id" : "dbtest001.testuser01",    "userId" : UUID("d1fefe19-a94f-4300-8855-fd722f14e13f"),    "user" : "testuser01",    "db" : "dbtest001",    "roles" : [        {            "role" : "readWrite",            "db" : "dbtest001"        }    ]}

撤回读role读写权限:

> db.revokeRolesFromUser('testuser01',[ { role : 'readWrite', db : 'dbtest001' }])> db.getUser("testuser01"){    "_id" : "dbtest001.testuser01",    "userId" : UUID("d1fefe19-a94f-4300-8855-fd722f14e13f"),    "user" : "testuser01",    "db" : "dbtest001",    "roles" : [ ]}

更改密码: db.changeUserPassword()

db.createUser({user:"testuser01",pwd:"testuser123",roles:[{role:"read",db:"dbtest001"}]})

修改密码:

> db.changeUserPassword("testuser01","123456")

测试:使用原密码登录报错如下:

[root@localhost ~]# mongo 127.0.0.1:6068/dbtest001 -u testuser01 -p 'testuser123'MongoDB shell version v3.6.16connecting to: mongodb://127.0.0.1:6068/dbtest001?gssapiServiceName=mongodb2020-01-01T21:51:35.637+0800 E QUERY    [thread1] Error: Authentication failed. :connect@src/mongo/shell/mongo.js:263:13@(connect):1:6exception: connect failed

使用新的密码登录成功

[root@localhost ~]# mongo 127.0.0.1:6068/dbtest001 -u testuser01 -p '123456'MongoDB shell version v3.6.16connecting to: mongodb://127.0.0.1:6068/dbtest001?gssapiServiceName=mongodbImplicit session: session { "id" : UUID("966023f0-ff7b-4726-a216-8475bc729971") }MongoDB server version: 3.6.16> show collections;chenji> db.chenji.find();{ "_id" : ObjectId("5e0c80a8efc383349153386a"), "name" : "小花", "年级" : "二年级", "性别" : "男", "爱好" : "学习" }{ "_id" : ObjectId("5e0c80c3efc383349153386b"), "name" : "花花", "年级" : "一年级", "性别" : "女", "爱好" : "唱歌" }{ "_id" : ObjectId("5e0c83c8efc383349153386c"), "name" : "小花", "年级" : "三年级", "性别" : "女", "爱好" : "打球" }{ "_id" : ObjectId("5e0c83e9efc383349153386d"), "name" : "小花", "年级" : "四年级", "性别" : "女", "爱好" : "画画" }

查看当前库下的表:

show collections
chenji

查看集合中所有的内容:

> db.chenji.find();{ "_id" : ObjectId("5e0c80a8efc383349153386a"), "name" : "小花", "年级" : "二年级", "性别" : "男", "爱好" : "学习" }{ "_id" : ObjectId("5e0c80c3efc383349153386b"), "name" : "花花", "年级" : "一年级", "性别" : "女", "爱好" : "唱歌" }

查看名字叫小花的记录:

> db.chenji.find({"name":"小花"}){ "_id" : ObjectId("5e0c80a8efc383349153386a"), "name" : "小花", "年级" : "二年级", "性别" : "男", "爱好" : "学习" }{ "_id" : ObjectId("5e0c83c8efc383349153386c"), "name" : "小花", "年级" : "三年级", "性别" : "女", "爱好" : "打球" }{ "_id" : ObjectId("5e0c83e9efc383349153386d"), "name" : "小花", "年级" : "四年级", "性别" : "女", "爱好" : "画画" }

参考资料:
MongoDB用户和角色解释系列(上)
http://www.mongoing.com/archives/26710

先小结到此处,后续在继续学习补充

年级 性别 小花 用户 角色 权限 密码 学习 测试 登录 文件 配置 参数 管理 成功 信息 内容 参考资料 名字 小结 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全基本因素包括以下 软件开发是不是一定要英语好 衢州定制app软件开发 群晖nas服务器数据备份 校园网络安全标题 杭州乐刻网络技术有限公司总资产 基于教学辅助软件开发 常用的数据库的安装方法 数据库怎么新建查询代码 第一代数据库技术是指 网络安全知识专题讲座读后感 民生银行长沙分行软件开发岗招聘 软件开发会不会特别累 北京金正平网络技术有限公司 数据库 网页 海宁滤靠网络技术有限公司 唱歌评分器软件开发 2020三级数据库技术目录 网络安全非传统安全问题 香港yoov互联网科技 饥荒服务器管理工具包 战地1有机器人服务器吗 网络安全课后答案沈鑫 数据库删除数据的方法 常用的数据库的安装方法 软件开发通过项目提高实战能力 vb创建1个数据库 黄浦区智能软件开发使用方法 北京科技职业学院互联网 济南科森网络技术有限公司
0