MongoDB数据库授权认证的实现

 更新时间:2021年12月29日 09:52:51   作者:Jiangxl~  
本文主要介绍了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.创建一个用户

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

在这里插入图片描述

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

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

2.3.重启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

2.4.使用口令登陆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

使用口令登陆后会发现最后一个警告信息也会消失

在这里插入图片描述

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

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

3.1.创建用户并制造数据

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

在这里插入图片描述

3.2.使用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 }

可读可写

在这里插入图片描述

3.3.使用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数据库授权认证的实现的文章就介绍到这了,更多相关MongoDB数据库授权认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决MongoDB 排序超过内存限制的问题

    解决MongoDB 排序超过内存限制的问题

    最近小编遇到这样的问题:对集合执行一个大排序操作(如聚合),出现以下错误:(测试版本:MongoDB 3.0.6),怎么快速解决此问题呢?下面小编给大家分享MongoDB 排序超过内存限制的解决方法,一起看看吧
    2017-07-07
  • mongodb eval 执行服务器端脚本

    mongodb eval 执行服务器端脚本

    在MongoDB的服务器端可以通过db.eval函数来执行javascript脚本,如我们可以定义一个javascript函数,然后通过db.eval在服务器端来运行!我们前面其实也接触过在服务器段运行一个预定义的javascript脚本的情况,如在$where查询,执行mapreduce任务等。
    2015-05-05
  • MongoDB数据库安装配置、基本操作实例详解

    MongoDB数据库安装配置、基本操作实例详解

    这篇文章主要介绍了MongoDB数据库安装配置、基本操作,结合实例形式详细分析了MongoDB数据库安装配置具体步骤、相关命令与基本操作实现技巧,需要的朋友可以参考下
    2020-01-01
  • Linux安装MongoDB 4.0.3详细步骤

    Linux安装MongoDB 4.0.3详细步骤

    这篇文章主要介绍了Linux安装MongoDB 4.0.3详细步骤的相关资料,需要的朋友可以参考下
    2023-06-06
  • Window环境下配置Mongodb数据库

    Window环境下配置Mongodb数据库

    这篇文章介绍了Window环境下配置Mongodb数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Mongodb启动命令参数中文说明

    Mongodb启动命令参数中文说明

    这篇文章主要介绍了Mongodb启动命令参数中文说明,本文包括基本配置、主/从参数、Sharding(分片)选项等内容,需要的朋友可以参考下
    2014-10-10
  • Navicat远程连接MongoDB最全实现方法以及报错解决

    Navicat远程连接MongoDB最全实现方法以及报错解决

    这篇文章主要给大家介绍了关于Navicat远程连接MongoDB最全实现方法以及报错解决的相关资料,文中通过图文将实现的步骤一步步介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友可以参考下
    2023-03-03
  • MongoDB中的常用语句总结大全

    MongoDB中的常用语句总结大全

    这篇文章主要给大家总结介绍了关于MongoDB中的一些常用语句,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Linux服务器下MariaDB 10自动化安装部署

    Linux服务器下MariaDB 10自动化安装部署

    这篇文章主要介绍了Linux服务器下MariaDB 10自动化安装部署,需要的朋友可以参考下
    2016-08-08
  • Mac中mongoDB的安装与卸载步骤详解

    Mac中mongoDB的安装与卸载步骤详解

    mongoDB是一个非常不错的数据库,最近也正在学习mongoDB,在使用一个数据库前必不可少的就是安装和卸载,所以下面这篇文章主要给大家介绍了关于Mac系统中mongoDB安装与卸载的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10

最新评论