MongoDB安全策略
一,修改启动端口
mongo的默认端口为27017 如果启用的是27017端口并且在公网上很容易被人攻击,所以第一点我们要修改端口
sudo ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs
我们现在启动的是29089端口
启动shell
$ ./mongo
报错:
Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
这是是因为我们修改了端口,而默认连接的是27017的端口,所以我们进入shell时也要指定启动服务似的端口
$ ./mongo --port 29089
这样就可以进入了
二,用户认证
mongodb默认是没有管理账户的,需要开发人员添加管理员账户,在启动mongo服务时添加身份认证才可以进入数据库,所以我们需要做两点:
- 添加管理员
- 启动服务时时添加 auth 指令
mogodb 默认有两个数据库:
在我们初次安装并启动mongo服务后,进入shell管理可以看到已存在两个数据库,在执行show dbs时 会显示以下两个数据库
- admin
- local
我们要在admin里添加用户以便在进入数据库时认证,我是在mac下操作,以下都是mac下的命令,下面演示整个用户添加和认证的过程
1.检查mongo服务是否开启
$ ps -ef | grep mongo
未找到mongo启动进程
2.启动mongo服务
$ cd /usr/local/bin
$ ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs
成功启动mongo
3.进入shell管理后台
$ cd /usr/local/bin
$ ./mongo --port 29089
4.查看当前所有数据库
$ show dbs
除了admin,local数据库其他都是我业务上使用后建立的数据库,可以看到我们直接就访问到数据库并且可以操作
5.在admin库里添加管理员用户
$ use admin
$ db.getUsers();
使用admin数据库并检查是否存在用户
6 创建用户
$ db.createUser({user:"leinov",pwd:"123456",roles:["root"]})
db.getUsers();
db.createUser()创建一个用户,并分配角色,我们创建里一个超级管理员,这个角色可以对本机mongo实例内的所有数据库做有效的读写操作,关于db.createUser()方法参考官方文档 https://docs.mongodb.com/manual/reference/method/db.auth/
7 重新启动服务并添加认证auth
$ sudo ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs --auth
在启动命令后面加上auth这样在进入数据库时就会开启认证
8.重新进入shell后台
$ ./mongo--port29089
$ show dbs
提示没有权限查看数据库list
9.切换到admin数据库验证
$ use admin
$ db.auth({user:"leinov",pwd:"123456"})
db.auth()方法是验证用户的操作方法,返回值为0/1 1为验证成功
10.再次查看数据库
$ show dbs
完成端口修改和用户认证基本上就可以保证数据库的安全了,我自己的mongo也被黑了,网上其实还有很多裸奔的mongo数据库,所以一定要给自己的mongo修改端口添加用户认证保证安全。
3.0后的mongo很多方法都有变化,具体参考官方文档 https://docs.mongodb.com/
MongoDB安全策略的更多相关文章
- NoSQL与MongoDB介绍
写在前面 本文是由一次演讲整理出来的,文中大部分资料来源于网络,感谢Wikipedia,Google和MongoDB官网.文中使用的MongoDB版本为1.2.4. What is NoSQL NoS ...
- CentOS MongoDB 高可用实战
原文:https://www.sunjianhua.cn/archives/centos-mongodb.html 一.MongoDB 单节点 1.1.Windows 版安装 1.1.1 获取社区版本 ...
- 【Mongodb教程 第十六课 】 分享NO-SQL开发实战
最近研究了一下NOSQL,现整理目录如下: 一.关系数据库的瓶颈: 二.NOSQL概述: 三.NOSQL中的热门数据库MongoDB介绍及安装配置: 四.MongoDB开发模式及实战: 一.关系数据库 ...
- MongoDB最佳安全实践
在前文[15分钟从零开始搭建支持10w+用户的生产环境(二)]中提了一句MongoDB的安全,有小伙伴留心了,在公众号后台问.所以今天专门开个文,写一下关于MongoDB的安全. 一.我的一次Mong ...
- MongoDB中如何优雅地删除大量数据
删除大量数据,无论是在哪种数据库中,都是一个普遍性的需求.除了正常的业务需求,我们需要通过这种方式来为数据库"瘦身". 为什么要"瘦身"呢? 表的数据量到达一定 ...
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
随机推荐
- 如何解释json的字符串
public void getToken(){ String json = getJedis().get("f2b9152f36424e8b8a454df9b50eb743"); ...
- Mac用ssh登录Ubuntu14.04
在Ubuntu上配置ssh-server sudo apt-get install openssh-server 然后确认ssh-server是否启动 ps -e | grep ssh 如果存在s ...
- 【PHP】震惊,一张图详解递归函数!!!!
在PHP学习中,递归函数是一个非常重要也是非常难以理解的部分,本博文将通过一张图尽可能演示这个过程,不对之处还请指出
- localStorage与location的用法
1.localStorage 是h5提供的客户端存储数据的新方法: 之前,这些都是由 cookie 完成的.但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 coo ...
- 【原】无脑操作:Windows 10 + MySQL 5.5 安装使用及免安装使用
本文介绍Windows 10环境下, MySQL 5.5的安装使用及免安装使用 资源下载: MySQL安装文件:http://download.csdn.net/detail/lf19820717/9 ...
- Centos7yum安装Redis详细教程
原本是在自己的mac上安装redis的,通过brew去安装的redis觉得很简单,实际macos系统与centos系统还是有一些区别的. 1.yum安装redis服务 sudo yum install ...
- c#编程-线程同步
线程同步 上一篇介绍了如何开启线程,线程间相互传递参数,及线程中本地变量和全局共享变量区别. 本篇主要说明线程同步. 如果有多个线程同时访问共享数据的时候,就必须要用线程同步,防止共享数据被破坏.如果 ...
- 事务之使用JDBC进行事务的操作
本篇讲述数据库中非常重要的事务概念和如何使用MySQL命令行窗口来进行数据库的事务操作.下一篇会讲述如何使用JDBC进行数据库的事务操作. 事务是指数据库中的一组逻辑操作,这个操作的特点就是在该组逻辑 ...
- windows上定时执行php文件
<?php $fp = fopen("E:/wwwroot/test/plan.txt", "w+"); fwrite($fp, date("Y ...
- css3变换,过度,动画实现梦幻网页
html和css3一出,整个互联网设计发生了颠覆性的改变,各大IT企业也推出了很多新颖的设计,比如百度浏览器的下载首页,fullpage设计风格加css动画让网页看起来很流畅舒服. css3的变换有3 ...