MongoDB数据库授权认证

文章目录

  • MongoDB数据库授权认证
    • 1.与用户相关的命令
    • 2.配置mongodb登陆授权认证
      • 2.1.创建一个用户
      • 2.2.修改配置文件启用用户认证
      • 2.3.重启mongodb
      • 2.4.使用口令登陆mongodb
    • 3.授权用户并赋予多个权限
      • 3.1.创建用户并制造数据
      • 3.2.使用mytest登录test库验证权限
      • 3.3.使用mytest登录test2库验证权限

1.与用户相关的命令

db.auth() 将用户验证到数据库。
db.changeUserPassword() 更改现有用户的密码。
db.createUser() 创建一个新用户。
db.dropUser() 删除单个用户。
db.dropAllUsers() 删除与数据库关联的所有用户。
db.getUser() 返回有关指定用户的信息。
db.getUsers() 返回有关与数据库关联的所有用户的信息。
db.grantRolesToUser() 授予用户角色及其特权。
db.removeUser() 已过时。从数据库中删除用户。
db.revokeRolesFromUser() 从用户中删除角色。
db.updateUser() 更新用户数据。

2.配置mongodb登陆授权认证

2.1.创建一个用户

> use admin
> db.createUser(
{user: "admin",pwd: "123456", roles: [ { role: "root", db: "admin" } ]          //指定角色为root,表示管理员
}
> db.getUsers()

2.2.修改配置文件启用用户认证

[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
security:authorization: enabled

2.3.重启mongodb

[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
killing process with pid: 17899
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
about to fork child process, waiting until server is ready for connections.
forked process: 18511
child process started successfully, parent exiting

2.4.使用口令登陆mongodb

[mongo@mongodb-1 ~]$ mongo -uadmin -p123456
MongoDB shell version v4.0.14
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ae65176e-ac6b-4906-b621-496996381417") }
MongoDB server version: 4.0.14
> show dbs

使用口令登陆后会发现最后一个警告信息也会消失

3.授权用户并赋予多个权限

mongodb可以创建多个用户并针对不同的库进行不同的操作

3.1.创建用户并制造数据

1.创建用户
[mongo@mongodb-1 ~]$ mongo -uadmin -p123456
> db.createUser(
...   {
...     user: "mytest",
...     pwd: "123456",
...     roles: [ { role: "readWrite", db: "test" },     //可读可写
...              { role: "read", db: "test2" }   ]                  //可读
...   }
... )2.插入数据
test库
> use test
> db.test.insert({"name":"xiaoming","age":10})
> db.test.insert({"name":"xiaohong","age":10})
> db.test.insert({"name":"xiaolan","age":10})test2库
> use test2
> db.test2.insert({"name":"jiangxl","job":"it","age":"99"})
> db.test2.insert({"name":"wanger","job":"it","age":"99"})

3.2.使用mytest登录test库验证权限

1.登录mytest用户并连接到tets库
[mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test2.查看所有表
> show tables
hash
test3.查看是否有读权限
> db.test.find()
{ "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
{ "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
{ "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }4.查看是否有写入权限
> db.test.insert({"name":"xiaozhang","age":10})5.查看是否写入成功
> db.test.find()
{ "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
{ "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
{ "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }
{ "_id" : ObjectId("602c74f949b9d3f400ed866b"), "name" : "xiaozhang", "age" : 10 }

可读可写

3.3.使用mytest登录test2库验证权限

由于普通用户只能登录test库因此想要切换其他库,只能是登陆test库后使用use进行切换

1.登录test库
[mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test2.切换到tets2库
> use test23.查看表
> show tables
test24.查看表中数据
> db.test2.find()5.插入一条数据,查看是否插入成功
> db.test2.insert({"name":"xiaozi","job":"it","age":"99"})
WriteCommandError({"ok" : 0,"errmsg" : "not authorized on test2 to execute command { insert: \"test2\", ordered: true, lsid: { id: UUID(\"6203f7df-d8f8-4880-aab3-4db712ae785f\") }, $db: \"test2\" }","code" : 13,"codeName" : "Unauthorized"
})

可以看到只能读取,不能插入

MongoDB数据库授权认证相关推荐

  1. MongoDB数据库创建用户及常用命令

    MongoDB数据库无认证启动命令 mongod -f /mongodb/etc/mongo.conf 有认证的启动命令 mongo -f /mongodb/etc/mongo.conf --auth ...

  2. Spring Security使用数据库登录认证授权

    一.搭建项目环境 1.创建 RBAC五张表 RBAC,即基于角色的权限访问控制(Role-Based Access Control),就是用户通过角色与权限进行关联. 在这种模型中,用户与角色之间,角 ...

  3. (二)基于数据库的认证与授权

    环境准备 controller @RestController @RequestMapping("/api/admin") public class AdminController ...

  4. MongoDB用户授权和管理

    2019独角兽企业重金招聘Python工程师标准>>> MongoDB用户授权和管理 2017年02月15日 15:40:04 奋斗吧_攻城狮 阅读数:6974 标签: mongod ...

  5. MongoDB未授权访问漏洞记录(端口:27017,37017)

    一.漏洞危害 对外开放的MongoDB服务,未配置访问认证授权,无需认证连接数据库后对数据库进行任意操作(增.删.改.查高危动作),存在严重的数据泄露风险. 二.漏洞成因 MongoDB服务安装后,默 ...

  6. Linux安装mongodb数据库最新版(全网最细)

    Linux安装mongodb数据库最新版 一.下载安装包 二.安装mongodb 1.使用Xftp将压缩包上传到指定目录下: 2.创建mongodb数据存储文件和日志文件 3.将mongodb服务加入 ...

  7. python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码

    MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...

  8. MongoDB数据库常见问题

    简介 用户rpm包安装的mongo数据库,是没有用户权限认证的,这样非常的不安全,攻击者使用特定的脚本就能连上你的mongo数据库,并将数据进行加密,并给你留勒索信息 MongoDB角色介绍 1.Da ...

  9. 选择适合的Node.js授权认证策略

    英文原文:https://stormpath.com/blog/choosing-nodejs-authentication-strategy/ Node.js正在兴起!2010年就开始使用Node工 ...

最新文章

  1. 【 Verilog HDL 】case, casez, casex 之干货总结
  2. [翻译:更新]Understanding Linux Network Internals - Table of Contents
  3. .NET Core 如何调试 CPU 爆高?
  4. Qt工作笔记-在QTreeView上实现模型数据的拖拽
  5. Python-selenium-操作元素
  6. 机器学习中数据清洗预处理入门完整指南
  7. 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
  8. 一道简单的多维数组取值问题
  9. excel导入成html页面上的表格
  10. Gym - 100783E
  11. nginx trac mysql svn_linux下nginx+svn
  12. Xmodem/Ymodem/Zmodem协议详解
  13. 期权的“溢价率”、“杠杆率”不是越高越好
  14. shell支持loop吗_如何在 Bash 中使用循环 | Linux 中国
  15. 自动控制原理->控制系统性能
  16. flask--虚拟环境
  17. ORACLE 11g自带DBMS函数包
  18. 数据标注的作用及行业现状
  19. FairyGUI(FGUI)常用方法笔记
  20. HIT暑假python作业三《超级画板》

热门文章

  1. 福禄克Fluke TiX501 热像仪技术规格
  2. 第三方软件测试(软件检测)收费标准
  3. 启动马达接线实物图_电机星角启动电路如何接线(原理图及实物接线图)
  4. 基于vue利用openlayers加载天地图的影像图,地形图
  5. HC05与STM32进行串口通讯实现与手机APP的数据透传
  6. 计算机可以玩游戏吗教程,怎么在电脑上玩ios游戏_电脑上玩ios游戏教程_飞翔教程...
  7. ElementUI中某一列插入组件(slot-scope=“scope“用法)
  8. log4j2 自动删除过期日志文件配置及实现原理解析
  9. 中国计算机信息系统集成行业协会:信息安全服务资质等级划分,你了解吗
  10. IntArray和Array<Int>