民工哥 MongoDB 教程:MD 常用管理命令与授权认证

2023年 7月 10日 60.7k 0

MongoDB 常用命令

常用命令

mongo         #登陆命令
mongod        #启动命令
mongodump     #全备导出,压缩格式
mongorestore  #恢复
mongoexport   #备份导出,可读的json格式
mongoimport   #恢复
mongos        #集群分片
mongotop      #查看mongo的运行状态
mongostat     #查看mongo的运行状态

批量写入mongodb数据观察负载

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

民工哥 MongoDB 教程:MD 常用管理命令与授权认证

修改配置文件启用用户认证
[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml 
security:
  authorization: enabled
重启mongodb
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
killing process with pid: 17899
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml 
about to fork child process, waiting until server is ready for connections.
forked process: 18511
child process started successfully, parent exiting
使用口令登陆mongodb
[mongo@mongodb-1 ~]$ mongo -uadmin -p123456
MongoDB shell version v4.0.14
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ae65176e-ac6b-4906-b621-496996381417") }
MongoDB server version: 4.0.14
> show dbs

使用口令登陆后会发现最后一个警告信息也会消失民工哥 MongoDB 教程:MD 常用管理命令与授权认证

授权用户并赋予多个权限

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

创建用户并制造数据
1.创建用户
[mongo@mongodb-1 ~]$ mongo -uadmin -p123456
> db.createUser(
...   {
...     user: "mytest",
...     pwd: "123456", 
...     roles: [ { role: "readWrite", db: "test" },  //可读可写
...              { role: "read", db: "test2" }   ]     //可读
...   }
... )

2.插入数据
test库
> use test
> db.test.insert({"name":"xiaoming","age":10})
> db.test.insert({"name":"xiaohong","age":10})
> db.test.insert({"name":"xiaolan","age":10})

test2库
> use test2
> db.test2.insert({"name":"jiangxl","job":"it","age":"99"})
> db.test2.insert({"name":"wanger","job":"it","age":"99"})

民工哥 MongoDB 教程:MD 常用管理命令与授权认证

使用mytest登录test库验证权限
1.登录mytest用户并连接到tets库
[mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test

2.查看所有表
> show tables
hash
test

3.查看是否有读权限
> db.test.find()
{ "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
{ "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
{ "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }

4.查看是否有写入权限
> db.test.insert({"name":"xiaozhang","age":10})

5.查看是否写入成功
> db.test.find()
{ "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
{ "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
{ "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }
{ "_id" : ObjectId("602c74f949b9d3f400ed866b"), "name" : "xiaozhang", "age" : 10 }

可读可写民工哥 MongoDB 教程:MD 常用管理命令与授权认证

使用mytest登录test2库验证权限

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

1.登录test库
[mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test

2.切换到tets2库
> use test2

3.查看表
> show tables
test2

4.查看表中数据
> db.test2.find()

5.插入一条数据,查看是否插入成功
> db.test2.insert({"name":"xiaozi","job":"it","age":"99"})
WriteCommandError({
 "ok" : 0,
 "errmsg" : "not authorized on test2 to execute command { insert: "test2", ordered: true, lsid: { id: UUID("6203f7df-d8f8-4880-aab3-4db712ae785f") }, $db: "test2" }",
 "code" : 13,
 "codeName" : "Unauthorized"
})

可以看到只能读取,不能插入民工哥 MongoDB 教程:MD 常用管理命令与授权认证

来源:https://jiangxl.blog.csdn.net/article/details/122185659   https://jiangxl.blog.csdn.net/article/details/122185708

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论