服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - MongoDB数据库授权认证的实现

MongoDB数据库授权认证的实现

2022-02-10 17:38Jiangxl~ MongoDB

本文主要介绍了MongoDB数据库授权认证的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

1.与用户相关的命令

  • db.auth() 将用户验证到数据库。
  • db.changeuserpassword() 更改现有用户的密码。
  • db.createuser() 创建一个新用户。
  • db.dropuser() 删除单个用户。
  • db.dropallusers() 删除与数据库关联的所有用户。
  • db.getuser() 返回有关指定用户的信息。
  • db.getusers() 返回有关与数据库关联的所有用户的信息。
  • db.grantrolestouser() 授予用户角色及其特权。
  • db.removeuser() 已过时。从数据库中删除用户。
  • db.revokerolesfromuser() 从用户中删除角色。
  • db.updateuser() 更新用户数据。

2.配置mongodb登陆授权认证

2.1.创建一个用户

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

MongoDB数据库授权认证的实现

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

?
1
2
3
[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
security:
  authorization: enabled

2.3.重启mongodb

?
1
2
3
4
5
6
[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

2.4.使用口令登陆mongodb

?
1
2
3
4
5
6
[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数据库授权认证的实现

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

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

3.1.创建用户并制造数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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数据库授权认证的实现

3.2.使用mytest登录test库验证权限

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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数据库授权认证的实现

3.3.使用mytest登录test2库验证权限

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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数据库授权认证的实现

到此这篇关于mongodb数据库授权认证的实现的文章就介绍到这了,更多相关mongodb数据库授权认证内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_44953658/article/details/122185708

延伸 · 阅读

精彩推荐
  • MongoDBmongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参...

    ZJW02155642020-05-22
  • MongoDBMongoDB多条件模糊查询示例代码

    MongoDB多条件模糊查询示例代码

    这篇文章主要给大家介绍了关于MongoDB多条件模糊查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值...

    浅夏晴空5902020-05-25
  • MongoDB在mac系统下安装与配置mongoDB数据库

    在mac系统下安装与配置mongoDB数据库

    这篇文章主要介绍了在mac系统下安装与配置mongoDB数据库的操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    CXYhh1219312021-11-14
  • MongoDBMongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    这篇文章主要给大家介绍了关于MongoDB查询之高级操作(多条件查询、正则匹配查询等)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者...

    w田翔3872020-12-19
  • MongoDBWindows下MongoDB配置用户权限实例

    Windows下MongoDB配置用户权限实例

    这篇文章主要介绍了Windows下MongoDB配置用户权限实例,本文实现需要输入用户名、密码才可以访问MongoDB数据库,需要的朋友可以参考下 ...

    MongoDB教程网3082020-04-29
  • MongoDBMongodb索引的优化

    Mongodb索引的优化

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。接下来通过本文给大家介绍Mongodb索引的优化,本文介绍的非常详细,具有参考借鉴价值,感...

    MRR3252020-05-05
  • MongoDBMongoDB的索引

    MongoDB的索引

    数据库中的索引就是用来提高查询操作的性能,但是会影响插入、更新和删除的效率,因为数据库不仅要执行这些操作,还要负责索引的更新 ...

    MongoDB教程网2532020-05-12
  • MongoDBMongoDB系列教程(五):mongo语法和mysql语法对比学习

    MongoDB系列教程(五):mongo语法和mysql语法对比学习

    这篇文章主要介绍了MongoDB系列教程(五):mongo语法和mysql语法对比学习,本文对熟悉Mysql数据库的同学来说帮助很大,用对比的方式可以快速学习到MongoDB的命...

    MongoDB教程网3252020-05-01