MongoDB工具命令和用户认证
创始人
2024-01-20 11:15:18
0

1.MongoDB工具命令

文章目录

  • 1.MongoDB工具命令
    • 1.1.Mongod命令
    • 1.2.Mongos命令
    • 1.3.Mongostat命令
    • 1.4.Mongotop命令
    • 1.5.Mongooplog命令
    • 1.6.Mongoperf命令
  • 2.MongoDB用户认证
    • 2.1.创建一个用户
    • 2.2.修改配置文件启用用户认证
    • 2.3.重启MongoDB
    • 2.4.使用用户口令登录MongoDB
  • 3.授权用户并赋予多个权限
    • 3.1.创建用户并制造数据
    • 3.2.使用"qing"用户登录test库进行权限验证
    • 3.3.查看test2库的权限

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.6.Mongoperf命令

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

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

2.MongoDB用户认证

用户相关命令

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

2.1.创建一个用户

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

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

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

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

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

2.4.使用用户口令登录MongoDB

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

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})

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

1.登录用户qing并连接test库
[root@localhost mongo_clusetr]# mongodb/bin/mongo -uqing -p123456 192.168.40.4:27017/test2.查看所有表
> show tables
test
test13.查看是否有读的权限
> 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 }
是具有读写的权限

3.3.查看test2库的权限

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

1.切换test2库
> use test2
switched to db test22.查看所在库
> db
test23.查看表中数据
> 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 }
发现插入失败,只有读取权限

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...