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<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 }
发现插入失败,只有读取权限