前言

Mongodb 数据库默认情况下是没有访问控制的,整个数据库对外是开发的,只要能连上数据库,则可以进行任何操作,这会对数据带来很大的风险。当然,我们可以启用mongodb的访问控制,只让通过认证的用户才能对数据库进行角色范围内的操作。
启用访问控制可以通过在启动 mongodb 时指定 --auth 参数来设置,另外还涉及到创建用户 db.createUser 操作以及一些角色的定义,我们先来看这部分内容。
db.createUser() 用法
db.createUser({
user: "$USERNAME",
pwd: "$PASSWROD",
roles: [
{ role: "$ROLE_NAME", db: "$DBNAME"}
]
})
参数说明:
Mongodb 预定义角色
Mongodb 中预定义了一些角色,把这些角色赋予给适当的用户上,用户就只能进行角色范围内的操作。
1、数据库用户角色 (所有数据库都有)
2、数据库管理角色(所有数据库都有)
3、集群管理角色(admin数据库可用)
4、备份和恢复角色(admin数据库可用)
5、所有数据库角色(admin数据库可用)
6、超级角色(admin数据库可用)
7、内部角色
更多预定于角色的信息请参看:https://docs.mongodb.com/manual/core/security-built-in-roles/
启用访问控制的步骤
1, 启动 mongodb 实例,关闭 访问控制
不带 --auth
./mongod
2, 连接上 mongodb 实例
./mongo
3,创建用户管理员
在 admin 数据库中添加一个 具有 userAdminAnyDatabase 角色的用户作为用户管理用户。下面的例子中创建了 admin 为用户管理员。
> use admin
switched to db admin
> db.createUser({
... user: "admin",
... pwd: "admin",
... roles: [
... { role: "userAdminAnyDatabase", db: "admin"}
... ]
... })
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>
退出连接
4,重启数据库启用访问控制
命令行启动,只需要添加 --auth 参数
./mongo --auth
5,使用管理用户连接,有两种方法
./mongo -u "$USERNAME" -p "$PASSWROD" --authenticationDatabase "admin"db.auth()我们使用第二种
>
> use admin
switched to db admin
> db.auth("admin", "admin")
1
>
1 表示认证成功
6, 为某个数据库创建独立用户
以下为 test 数据库 创建具有读写权限的用户 test
admin 用户由于只有 userAdminAnyDatabase 权限,所以没有 test 数据的读写权限,所以,为了读写 test 数据库,我们需要创建一个用户。先看一下直接用 admin 会报什么错误
> use test
> show collections
2017-01-13T13:49:17.691+0800 E QUERY [thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not authorized on test to execute command { listCollections: 1.0, filter: {} }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:773:1
DB.prototype.getCollectionInfos@src/mongo/shell/db.js:785:19
DB.prototype.getCollectionNames@src/mongo/shell/db.js:796:16
shellHelper.show@src/mongo/shell/utils.js:754:9
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1
我们直接使用 show collections , 则报错:not authorized on test to execute command ,意思是没有权限。
> use test
switched to db test
> db.createUser({
... user: "test",
... pwd: "test",
... roles: [
... { role: "readWrite", db: "test"}
... ]
... })
Successfully added user: {
"user" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
>
然后我们使用 db.auth(“test”, “test”) , 再执行命令 则没有报错
> db.auth("test", "test")
1
>
> show collections
试着写入一条数据,也是正常的。
> db.t.insert({name:"buzheng"});
WriteResult({ "nInserted" : 1 })
> db.t.find();
{ "_id" : ObjectId("58786c84bf5dd606ddfe1144"), "name" : "buzheng" }
>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# mongodb
# 访问控制
# 启用访问控制
# mongodb添加访问控制
# MongoDB 3.0+安全权限访问控制详解
# 分布式文档存储数据库之MongoDB备份与恢复的实践详解
# 分布式文档存储数据库之MongoDB分片集群的问题
# 分布式文档存储数据库之MongoDB访问控制的操作方法
# 都有
# 用户可以
# 报错
# 会报
# 命令行
# 我们可以
# 这部
# 可以通过
# 只需要
# 这篇文章
# 有两种
# 涉及到
# 不带
# 则可
# 试着
# 重启
# 但不
# 能对
# 合集
相关文章:
IOS倒计时设置UIButton标题title的抖动问题
如何通过cPanel快速搭建网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
c# 在高并发场景下,委托和接口调用的性能对比
Swift中switch语句区间和元组模式匹配
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何将凡科建站内容保存为本地文件?
微信小程序 五星评分(包括半颗星评分)实例代码
官网建站费用明细查询_企业建站套餐价格及收费标准指南
建站之星如何防范黑客攻击与数据泄露?
怎么将XML数据可视化 D3.js加载XML
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
焦点电影公司作品,电影焦点结局是什么?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何快速选择适合个人网站的云服务器配置?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
建站主机如何选?性能与价格怎样平衡?
python的本地网站制作,如何创建本地站点?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
一键网站制作软件,义乌购一件代发流程?
建站主机选虚拟主机还是云服务器更好?
移民网站制作流程,怎么看加拿大移民官网?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何快速搭建支持数据库操作的智能建站平台?
如何通过多用户协作模板快速搭建高效企业网站?
深圳网站制作平台,深圳市做网站好的公司有哪些?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
已有域名和空间,如何快速搭建网站?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
C++如何使用std::optional?(处理可选值)
如何在阿里云虚拟主机上快速搭建个人网站?
网站制作公司排行榜,四大门户网站排名?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
如何选择域名并搭建高效网站?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
如何在阿里云购买域名并搭建网站?
C++时间戳转换成日期时间的步骤和示例代码
C#怎么使用委托和事件 C# delegate与event编程方法
深圳网站制作培训,深圳哪些招聘网站比较好?
如何通过可视化优化提升建站效果?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何通过NAT技术实现内网高效建站?
建站10G流量真的够用吗?如何应对访问高峰?
如何快速生成ASP一键建站模板并优化安全性?
实例解析angularjs的filter过滤器
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何用西部建站助手快速创建专业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。