未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬。怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性。

一直未给自己的mongodb数据库设置账号密码,也没禁止外网访问,等同于在这个开放的网络世界里裸奔了几个月,不被人惦记才怪呢。

昔人有云:跌倒并不可怕,可怕的是在同一个地方跌倒两次。

亡羊补牢,犹未迟也。

那么我将从两个方面提高mongo数据库的安全防护系数

1.设置mongodb外网禁止访问

启动数据库时,额外添加--bind_ip 127.0.0.1即可

 ./mongod --bind_ip 127.0.0.1 --dbpath /data/db --auth

也可以通过修改/etc/mongod.conf文件添加一行代码

#只监听本地接口,多个接口用,隔开
bind_ip = 127.0.0.1

2.为数据库设置账号密码登录权限

为了保证数据库需要账号密码才能连接,那么在启动数据库的时候需要添加auth参数

./mongod --dbpath /data/db --auth

也可以通过修改/etc/mongod.conf文件添加一行代码

  auth = true

这样在进行数据库连接的时候需要相应的账号密码才能成功访问。

如果之前数据库未设置账号密码的话,那么需要先添加一个管理员账户,

> use admin

switched to db admin

> db.createUser({user:"root",pwd:"123456",roles:["userAdminAnyDatabase"]})

Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

此时我们就成功的创建了一个管理员账户 账户名 root  密码 123456 ,此时执行show dbs会出现如下报错

> show dbs
2017-12-03T22:14:58.418+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} .....
上边提示意为当前admin数据库未经授权无法执行指令,因此需要以管理员身份登录验证,如下操作
> db.auth('dpd','123456')
1

上边执行登录操作,输出结果 1,说明登录成功。此时再执行 show dbs 则会成功输出结果。此刻我们是以管理员的身份登录数据库,如果切换到test数据库,执行db.blog.insert({name:1})会报错如下,同样意为该数据库未经授权无法操作:

> use test
switched to db test
> db.blog.insert({name:})
WriteResult({
"writeError" : {
"code" : 13,
"errmsg" : "not authorized on test to execute command { insert: \"blog\", documents: [ { _id: ObjectId('5a240d8e2d43081ea4271cc8'), name: 1.0 } ], ordered: true }"
}
})

所以要为test数据库添加一个用户,并以该用户身份登录才可以执行对该数据的操作。

> db.createUser({user:'use1',pwd:'123456',roles:["readWrite"]})
Successfully added user: { "user" : "use1", "roles" : [ "readWrite" ] }
> db.auth('use1','123456')
1
> db.blog.insert({name:})
WriteResult({ "nInserted" : 1 })
>

至此,完成了通过账号和密码登录权限对数据库的访问和操作。

那么最终标准的连接test数据库的URI语法如下:

mongodb://use1:123456@localhost:27017/test

通过设置上述两道关卡,妈妈再也不用担心我的学习啦

个人博客传送门》》》》》

mongodb禁止外网访问以及添加账号的更多相关文章

  1. mongodb数据库禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  2. Tomcat禁止外网访问

    Tomcat中某个应用禁止外网访问 Tomcat中有多个应用,由于权限需要,将某一个主机禁止外网访问.在config/server.xml中设置: <Host name="172.16 ...

  3. 使用iptables禁止外网访问tomcat的8080端口

    如果项目同时使用了nginx反向代理服务器和tomcat等web服务器,并且两台服务器都暴露于公网中,那么通常我们会禁止外网直接访问tomcat,因为以下原因: 1.如果可以直接访问tomcat,那么 ...

  4. tomcat manager 禁止外网访问 只容许内网访问

    参考:http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html A default Tomcat installation includes ...

  5. iptables禁止外网访问redis server服务默认端口6379的命令

    //只允许127.0.0.1访问6379 iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT //其他ip访问全部拒绝 iptab ...

  6. 怎样从外网访问内网MongoDB数据库?

    本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...

  7. 外网访问VMware虚拟机

      目的: 主机上安装了VMware,VMware上安装了Linux虚拟机(我安装的是Centos7).我想让虚拟机向外提供Web服务.本文记录如何让我的主机和外网用户可以访问VM虚拟机上的Web. ...

  8. WinServer 之 内网发布网站后端口映射外网访问

    内网IP只能在内网局域网访问连接,在外网是不能认识内网IP不能访问的.如有路由权限,且路由有固定公网IP,可以通过路由的端口映射,实现外网访问内网.如无路由,或路由无公网IP,需要用到第三方开放的花生 ...

  9. 利用nat.123实现SVN外网访问

    背景: 在高效平台的合作中,我们用到了很多团队合作开发的工具,比如SVN.禅道.Confluence等等.有了这些工具,我们可以很好的进行团队合作交流.但同样有所限制,这些工具都是发布在局域网中,只能 ...

随机推荐

  1. 怎样将Arranged_2压入General_Polygon_set_2中

    Thursday, March 14, 2013 How to Jam an Arrangement_2 into a General_polygon_set_2 I spent about thre ...

  2. AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label

    1.  filter可以接收参数,参数用 : 进行分割,如下: {{ expression | filter:argument1:argument2:... }} 2.   filter参数是 对象 ...

  3. Spark2.0机器学习系列之11: 聚类(幂迭代聚类, power iteration clustering, PIC)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:             (1)K-means             (2)Latent Dirichlet all ...

  4. centos7提示ifconfig command not found解决

    安装centos7时,选择了minimal install的话,没有安装网络组件. yum install net-tools 可以解决问题.

  5. CXF框架介绍及Spring集成

    1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...

  6. TensorFlow学习笔记(六)循环神经网络

    一.循环神经网络简介 循环神经网络的主要用途是处理和预测序列数据.循环神经网络刻画了一个序列当前的输出与之前信息的关系.从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出. ...

  7. python全栈开发从入门到放弃之面向对象反射

    1.classmethod.staticmethod方法 classmethod类方法默认参数cls,可以直接用类名调用,可以与类属性交互 #student文件内容 宝宝,男 博博,女 海娇,男 海燕 ...

  8. node的3大作用域

    除了持久性存储外,想要内存也可以存入数据,来做计算什么数据都存入访问一便数据库,效率就太低了 java有3大作用域request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应 ...

  9. ionic 配置打包环境

    配置java环境就不说了,太简单 下载AndroidSdkAndroid SDK Tools翻过墙的朋友可以去Google Android的官网上下载:http://developer.android ...

  10. Python+Appium API

    1.contextscontexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控 ...