MongoDB学习之--安全和认证
MongoDB学习之--安全和认证
本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作:
虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个公司都很规范,都有严格的分工制度,说不定作为程序员的我们常常身兼数职;
MongoDB支持对单个连接的认证,即便这个认证的权限模式很丑陋。
默认情况下,MongoDB设置为无权限访问限制,但是这种模式除了在开发阶段方便外,产品上线后风险就很大了;如果开启了安全性检查,那么必须认证用户才可访。这里也就我了解和学习到的东西介绍下,希望大家多多补充:
Mongodb的安全检查配置
在开启安全检查之前一定要先设置超级管理员账户(在认证的上下文中,admin库中的user被视为超级用户)
use admin db.addUser( "admin" , "admin" ) //设置管理员账户 用户名admin,密码admin |
如果你的Mongodb服务没有安装到服务进程中,在设置了管理员账户之后,你就可以重启连接,启动时加上 --auth命令行选项,便会进入安全检查模式;
这里说简要说下对于Mongodb安装到服务进程中的处理方式:
所以可按照下面步骤修改注册表
在注册表编辑页面按照箭头所示层级关系找到相应节点,最后修改Mongodb节点写ImagePath,添加即可,通过shell重启服务即可。
再次进入
这时便是要求你用户登录
接着通过我们创建的管理员用户登录
我们再次为test库添加两个用户(在admin登录的前提下,因为已经开启了安全认证):
use test db.addUser( "test" , "test" ); //添加test用户,非只读权限 db.addUser( "test3" , "test3" , true ); //添加test3用户,只读权限,第三个参数为true表示只读 |
(超级用户可以对任何库进行操作,而对于test库建立的用户只能操作单库:他的用户存储在system.users中,也就是说对于其他还是没有任何权限)
但是我在实践的过程中发现,如果你先用超级账户登录那么你可以执行show dbs命令的,但是如果此时你换成只读账户登录,同样可以执行show dbs命令,当然这个有一个前提:不断开连接,也就是超级用户和只读用户用的是同一个连接,我确定原因是什么,因为我没有测试,大致应该是因为Mongodb用户认证和连接是绑定的,如果节点切换了,那么就必须重新连接---ps(不保证这个理由的正确性);
还有一点就是默认情况下,mongodb可被任何Ip访问,为了提高其访问层次可以通过 bind_ip为其绑定可访问的IP,具体可通过 mongod help()查询下。
开启检查后C#驱动操作
1 //连接字符串格式为mongodb://[用户名:密码@]localhost:端口号/[数据库名]
2 //[]内为可选项
3 var connectionString = "mongodb://test:test@localhost:27017";
4
5 var client = new MongoClient(connectionString);
6 var server = client.GetServer();
7 var database = server.GetDatabase("test");
8
9 var collection = database.GetCollection<Student>("test");
10 //server.Connect();//可有可无
11 var entity = new Student
12 {
13
14 Address = new Address
15 {
16 City = "广州",
17 PostCode = "000000"
18 }
19 };
20 collection.Insert(entity);
直接上代码说了,配置上连接字符串即可访问,加上用户名密码即可,否则会抛出无权限访问的异常。。。今天下到这里吧,写的有点乱,写博客少,功底太弱,表达能力不强,苦逼啊,好多想表达的表达不出来,等写过去了,才发现好像又缺了点东西,shit,再接再励啊,多写多看多学!以后写东西得系统下
MongoDB学习之--安全和认证的更多相关文章
- MongoDB学习总结(五) —— 安全认证
作为数据库软件,我们要确保数据的安全,不是谁都可以访问的,所以mongodb也像其他的数据库软件一样可以采用用户验证的方法, mongodb 3.0之前的版本提供了addUser方法向不同的数据库添加 ...
- MongoDB学习总结(四) —— 索引的基本用法
说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...
- MongoDB学习总结(二)
前言:学习札记! MongoDB学习总结(二) 1. 安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongo ...
- MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁
权限 绑定内网I ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
随机推荐
- js 实现键盘记录 兼容FireFox和IE
这两天突然想弄弄js的键盘记录,所以就小研究了一下. 主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现 ...
- 将图片转为ASCII字符画
原文:将图片转为ASCII字符画 Copyright 2012 Conmajia 源代码下载:点击这里 什么是字符画?就是用ASCII字符来近似组成图像,就像这样: ╭╮ ╭╮ ││ ││ ╭┴┴—— ...
- 杭电dp题集,附链接还有解题报告!!!!!
Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f ...
- 深入理解C指针之二:C内存管理
原文:深入理解C指针之二:C内存管理 内存管理对所有程序来说都很重要.有时候内存由运行时系统隐式的管理,比如为变量自动分配内存.在这种情况下,变量分配在它所处的函数的栈帧上(每个函数都有它自己的栈帧, ...
- Socket 学习(一)
本次项目增加的引用using System.Net; using System.Net.Sockets; using System.Threading; TextBox.CheckForIllegal ...
- JS子元素oumouseover触发父元素onmouseout
原文:JS子元素oumouseover触发父元素onmouseout JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父 ...
- WebApi 插件式构建方案
WebApi 插件式构建方案 WebApi 插件式构建方案 公司要推行服务化,不可能都整合在一个解决方案内,因而想到了插件式的构建方案.最终定型选择基于 WebApi 构建服务化,之所以不使用 WCF ...
- python购物淫秽数据分析(2)
淘宝大数据的游戏,我重新提高自己的思维方式, 插件和代码前前后后写在六个版本,但最好的结果其实是我的第一次2第二码.这让我很惊讶, 但它也说明了一个问题.当你更熟悉的语言,当一方,你缺少的是其他的知识 ...
- HP quality center 9.0 邮件设置
[转载]HP quality center 9.0 邮件设置 (2010-09-20 10:28:03) 转载▼ 标签: 转载 原文地址:HP quality center 9.0 邮件设置作者: ...
- Android开源框架Volley(Google IO 2013)源代码及内部实现分析
1.Volley概述 在项目开发过 程中,博主曾写过大量的访问网络重复代码,特别是ListView adapter很难避免getView()方法不被重复调用,如果ImageView不利用缓存机制,那么 ...