2.MongoDB 用户管理

  • 注意:

    • 验证库,建立用户时use到的库,在使用用户时,要加上验证库才能登陆。
    • 对于管理员用户,必须在admin下创建.
      1. 建用户时,use到的库,就是此用户的验证库
      1. 登录时,必须明确指定验证库才能登录
      1. 通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
      1. 如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的.
  • 创建用户的语法:

    • db.createUser
    • {
    • user: "<name>",
    • pwd: "<cleartext password>",
    • roles: [
    • { role: "<role>",
    • db: "<database>" } | "<role>",
    • ...
    • ]
    • }
  • 语法说明:

    • user:用户名
    • pwd:密码
    • roles:
    • role:角色名
    • db:作用对象
    • role:root, readWrite,read
  • 实例1:

    • 创建超级管理员,管理所有数据库(必须在admin库中创建)
    • 登录mongodb:

      • mongo
      • use admin
      • db.createUser(
      • {
      • user: "root",
      • pwd: "root123",
      • roles: { role: "root", db: "admin" }
      • }
      • )
    • 登录验证用户创建是否成功:
      • mongo -uroot -proot123 192.168.8.5/admin
    • 禁止mongo无用户密码登录:

      • vim /mongodb/conf/mongo.conf
      • 添加:

        • security:
        • authorization: enabled
      • 重启mongodb

        • mongod -f /mongodb/conf/mongo.conf --shutdown
        • mongod -f /mongodb/conf/mongo.conf
      • 再次使用mongo登录 发现可以登录 但看不到任何数据库
    • 查看所有用户:
      • db.system.users.find().pretty()
  • 实例2;

    • 创建库管理用户:

      • 登录数据库:mongo -uroot -proot123 admin
      • use app (针对于app库创建管理用户)
      • db.createUser(
      • {
      • user: "adminapp",
      • pwd: "app123",
      • roles: { role: "dbAdmin", db: "app" }
      • }
      • )
      • 登录测试:mongo -uadminapp -papp123 192.168.8.10/app
  • 实例3:

    • 针对于app库创建app01用户,赋予读写权限:

      • use app
      • 单库完全控制账户
      • db.createUser(
      • {
      • user: "app01",
      • pwd: "app01",
      • roles: { role: "readWrite" , db: "app" }
      • }
      • )
    • 登录测试:mongo -uapp01 -papp01 192.168.8.10/app
      • 单库只读账户:

        • use app
        • db.createUser(
        • {
        • user: "app02",
        • pwd: "app02",
        • roles: { role: "read" , db: "app" }
        • }
        • )
        • mongo -uapp02 -papp02 192.168.8.10/app
  • 实例4:创建app数据库读写权限的用户并对test数据库具有读写权限:

    • 创建多库管理账户:

      • 用户app03针对于app具有读写权限,针对于test库同样具备读写权限
      • mongo -uroot -proot123 192.168.8.10/admin
      • use app
      • db.createUser(
      • {
      • user: "app03",
      • pwd: "app03",
      • roles: [ { role: "readWrite", db: "app" },
      • { role: "readWrite", db: "test" }]})
      • mongo -uapp03 -papp03 192.168.8.10/app
  • 实例5:

    • 查询mongodb中的用户信息:

      • mongo -uroot -proot123 192.168.8.10/admin
      • db.system.users.find().pretty()
    • 删除用户(需要以root用户登录到验证库)

      • mongo -uroot -proot123 192.168.8.10/admin
      • use app
      • db.dropUser("adminapp")
相关推荐
一米阳光86616 小时前
软考(中级)软件设计师核心笔记(3)数据库系统——概念、数据库设计
数据库·笔记·职场发展·软考·软件设计师
奈斯先生Vector6 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
乌萨奇也要立志学C++6 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
RisunJan8 小时前
Linux命令-slabtop(实时显示内核 slab 缓存信息)
linux
建筑工程企业管理系统8 小时前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
AI大模型-小华8 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
foolishlee9 小时前
Neon wal日志处理流程2
数据库
2601_9657984710 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
Cloud云卷云舒10 小时前
海山数据库(HaishanDB)面向工业云场景技术方案
数据库·haishandb·工业云·移动云海山数据库·天工云
逃逸线LOF10 小时前
Spring配置数据源{连接池}(Druid、c3p0)
java·数据库·spring