• MongoDB工具命令和用户认证


    1.MongoDB工具命令

    1.1.Mongod命令

    MongoDB是MongoDB系统的主要守护进程,它处理数据请求,管理数据访问,并执行后台管理操作。启动进程指定配置文件,控制数据库行为。

    1.2.Mongos命令

    Mongos对于“MongoDB Shard”,是用于处理癞子应用层的MongoDB分片配置的路由服务,并确定此在分片集群的位置,以完成这些操作。从应用程序的角度来看,一个Mongos实例与任何其他的MongoDB实例行为相同。

    1.3.Mongostat命令

    Mongostat实现程序可以快速概览当前正在运行的MOngoD或Mongos实例的状态。Mongostat在功能上类似于UNIX/linux文件系统实用程序vmstat,但提供有关的数据Mongod和Mongos实例。

    1.4.Mongotop命令

    Mongotop提供了一种追踪MongoDB实现读取和写入数据的时间量的方法。MOngotop提供每个收集级别的统计信息。默认情况下,Mongotop每秒放回一次值。

    1.5.Mongooplog命令

    Mongooplog是一个简单的工具,可以远程服务器的复制oplog轮询操作,并将其应用于本地服务器。此功能支持某些类型的实间迁移,这些迁移要求源服务器保持联机并整个迁移过程中运行。通常,此命令将采用以下形式

    Mongooplog  -from Mongodb().example.net --host mongodb1.example.net
    
    • 1

    1.6.Mongoperf命令

    Mongoperf是一种独立于MongoDB检查磁盘I/O性能的实用程序。它是随机磁盘I/O的测试并呈现结果。

    例如:
    echo"(nTherads:16,fileSizeMB:10000,r:true,w:true)"|mongoperf
    在这个操作中:
    mongoperf测试直接物理随机读写IO的,使用16个并发阅读器线程。
    mongoperf使用10G的测试文件。
    或者参数写入文件mongoperf
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.MongoDB用户认证

    用户相关命令

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

    2.1.创建一个用户

    > use admin
    > db.createUser(
    {
       user: "admin",
       pwd: "123456", 
       roles: [ { role: "root", db: "admin" } ]			//指定角色为root,表示管理员
    }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    请添加图片描述
    请添加图片描述

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

     [mongo_clusetr]# vim /opt/mongo_clusetr/mongodb_27017/conf/mongodb.yml
    修改配置文件:
    security:
     authorization:enabled
    
    • 1
    • 2
    • 3
    • 4

    2.3.重启MongoDB

    [root@localhost mongo_clusetr]# mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml --shutdown
    killing process with pid: 5358
    
    启动MongoDB
    [root@localhost mongo_clusetr]# mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml
    about to fork child process, waiting until server is ready for connections.
    forked process: 8365
    child process started successfully, parent exiting
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.4.使用用户口令登录MongoDB

    [root@localhost mongo_clusetr]# mongodb/bin/mongo -uadmin -p123456
    
    • 1

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

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

    3.1.创建用户并制造数据

    1.创建用户“qing”
    > db.createUser(
    ... {
    ...  user: "qing",
    ... pwd: "123456",
    ... roles: [ { role: "readWrite", db: "test" },  //可读可写
    ... { role: "read", db: "test2" }   ]  	//可读
    ... }
    ... )
    2.插入数据
    test库
    #我这边是已经提前插入好的
    > db.test.find()
    { "_id" : ObjectId("636918296db9dbd5d46e98af"), "name" : "zhang", "age" : "10" }
    { "_id" : ObjectId("6369183d6db9dbd5d46e98b0"), "name" : "li", "age" : "20" }
    
    test2
    > db.test2.insert({"name":"gao","age":20})
    > db.test2.insert({"name":"liu","age":20})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.2.使用"qing"用户登录test库进行权限验证

    1.登录用户qing并连接test库
    [root@localhost mongo_clusetr]# mongodb/bin/mongo -uqing -p123456 192.168.40.4:27017/test
    
    2.查看所有表
    > show tables
    test
    test1
    
    3.查看是否有读的权限
    > db.test.find()
    { "_id" : ObjectId("636918296db9dbd5d46e98af"), "name" : "zhang", "age" : "10" }
    { "_id" : ObjectId("6369183d6db9dbd5d46e98b0"), "name" : "li", "age" : "20" }
    
    4.查看是否有写入权限
     db.test.insert({"name":"wangwu","age":22})
    WriteResult({ "nInserted" : 1 })
    
    5.查询是否写入成功
    > db.test.find({"name":"wangwu"})
    { "_id" : ObjectId("63691c0764606b8480ada848"), "name" : "wangwu", "age" : 22 }
    是具有读写的权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.3.查看test2库的权限

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

    1.切换test2库
    > use test2
    switched to db test2
    
    2.查看所在库
    > db
    test2
    
    3.查看表中数据
    > db.test2.find()
    { "_id" : ObjectId("63691a6560b0576a88593727"), "name" : "gao", "age" : 20 }
    { "_id" : ObjectId("63691a6c60b0576a88593728"), "name" : "liu", "age" : 20 }
    
    4.尝试插入权限
    >db.test2.insert({"name":"qiang","age":50})
    WriteResult({
    	"writeError" : {
    		"code" : 13,
    		"errmsg" : "not authorized on test2 to execute command { insert: \"test2\", ordered: true, lsid: { id: UUID(\"ee4fcdd6-7b71-4a04-af50-17e134a7addf\") }, $db: \"test2\" }"
    	}
    })
    > db.test2.find()
    { "_id" : ObjectId("63691a6560b0576a88593727"), "name" : "gao", "age" : 20 }
    { "_id" : ObjectId("63691a6c60b0576a88593728"), "name" : "liu", "age" : 20 }
    发现插入失败,只有读取权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    【教3妹学算法-每日1题】设计有序流
    AI艺术的背后:详解文本生成图像模型【基于 VQ-VAE】
    vue-router入门学习3
    基于图像识别的迁移学习之二
    Python 三维网格体素化
    什么是自动化测试框架?
    SpringCloud&Eureka理论与入门
    系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度
    JS基础练习2
    《向量数据库指南》——向量数据库Milvus Cloud快速打造知识库 AI 应用
  • 原文地址:https://blog.csdn.net/qq_46020071/article/details/127741549