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

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

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

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/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 }
是具有读写的权限

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 }
发现插入失败,只有读取权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值