mongoDB数据库启用身份认证

前面已经分享了如何安装及启动MongoDB数据库以及Python中在scrapy框架下如何将爬取到的数据保存到MongoDB数据库中。如今咱们已经将数据保存到数据库中了,但如今其余人只要知道咱们的IP就能够远程操做咱们的MongoDB数据库了,能够随意增、删、改、查咱们数据库的数据,是否是很可怕!!!因此为了数据安全,咱们要启用身份验证,启用身份验证固然还有其余做用,好比咱们某款产品的后台要调用数据,为了数据安全能够为该数据库新建一个只有只读权限的帐号,下面咱们来看看如何启用身份认证。具体步骤以下:mongodb

1启用MongoDB无需访问控制shell

若是已经按照如何安装及启动MongoDB数据库中分享的步骤完成数据库的安装与启动。启动MongoDB可采用如下两种方式:数据库

1.在本地服务中查看MongoDB服务是否开启,若未启动点击启动便可。安全

本地服务打开方式:app

win7:框架

  1. 右键点击桌面的【计算机】图标,选择【管理】选项,点击打开scrapy

  2. 进入管理界面,点击打开【服务和应用程序】,能够看到【服务选项】点击打开便可spa

  3.  

win8:命令行

win + Q快捷键打开搜索,输入:本地服务日志

点击:查看本地服务 ,进入本地窗口

2.在mongod.exe文件位置打开命令窗口中运行以下命令:

mongod  --port 27017 --config "D:\mongodb\mongod.cfg" 

具体操做为:打开如下文件夹,按着shift键同时点击右键,有在此处打开命令行窗口的操做,点击便可进入命令行窗口。

2打开mongo

例如,使用mongo shell链接到实例。

mongo --port 27017

3建立超级管理员

在命令行中输入如下命令:

use admin
db.createUser(
 {
  user: "root",
  pwd: "kong1234",
  roles: [ { role: "root", db: "admin" } ]
 }
)

这样就生成了一个有root权限的用户,再输入如下命令:

db.auth("root","密码")

进行用户认证,查看用户是否建立成功。

4从新启动具备访问控制的MongoDB实例

使用--auth命令行选项从新启动 mongod 实例.

1.在mongod.exe文件位置打开命令窗口中运行以下命令:mongod  --auth --port 27017 --dbpath D:\data\db

本步操做同步骤1中的操做同样

2.修改MongoDB的配置文件mongo.config,以下:

#数据库数据存放目录

dbpath=D:\data\db

#数据库日志存放目录

logpath=D:\data\logs\mongo.log

#以追加的方式记录日志

logappend = true

#开启用户认证

auth=TRUE

#mongodb所绑定的ip地址

bind_ip=0.0.0.0

#端口号 默认为27017

port=27017 

#启用日志文件,默认启用

journal=true

在mongod.exe文件位置打开命令窗口中运行以下命令:

mongod --config D:\data\mongo.config

3.删除MongoDB的本地服务,从新添加

首先以管理员身份运行CMD,而后依次输入如下命令:

sc stop MongoDB

sc delete MongoDB

这便删除了以前的MongoDB服务,此时在本地服务中就看不到MongoDB服务了。

接下来输入:cd [mongo.exe所在文件路径]

继续输入:mongod --config D:\data\mongo.config --install --serviceName "MongoDB"

这便再次把MongoDB设置为Windows服务。此时在本地服务中就又能够看到MongoDB服务了。

再次启动MongoDB。

5以超级管理员身份进行链接和验证

在链接期间进行身份验证

使用-u <username>,-p <password>和--authenticationDatabase admin命令行选项启动一个mongo shell:

mongo --port 27017 -u "root" -p "密码" --authenticationDatabase "admin"

先链接后验证

将 mongo shell 链接到 mongodb,也就是先链接,后验证用户身份 :

mongo

切换到身份验证数据库(在这种状况下为admin),并使用db.auth(<username>,<pwd>)方法进行身份验证:

use admin
db.auth("root", "本身设置的密码" )

若是不进行以上的验证,直接执行下面步骤,将会出错,提示您没有相应权限

6根据须要建立其余用户

当超级管理员用户进行身份验证经过以后,可以使用db.createUser()建立其余用户。能够为用户分配任何内置角色或用户定义的角色。

如下操做将用户tester添加到在test数据库中并给予test数据库的readWrite角色以及在reporting数据库中读取角色。

use test
db.createUser(
 {
  user: "tester",
  pwd: "test123",
  roles: [ { role: "readWrite", db: "test" },
       { role: "read", db: "reporting" } ]
 }
)

7链接并验证tester

首先在mongod.exe文件位置打开命令窗口中运行以下命令:

mongo --port 27017 -u "tester" -p "test123" --authenticationDatabase "test"

使用用户 tester 插入一个集合

使用用户 tester,此用户有权在test数据库中执行读写操做(以及在reporting数据库中执行读操做)。 例如,在test数据库中执行如下插入操做:

db.foo.insert( { x: 1, y: 1 } )

小结

本次分享主要向你们介绍如何启用MongoDB的用户验证,主要可分为七个步骤,这里咱们开始新建的是超级管理员,而不是用户管理员两个均可以,但建议新建超级管理员。开启用户验证很重要,它能够有效保护咱们的数据不被轻易盗取,若是登录用户只有只读权限他就不能够增长、删除、更改原始数据,这样也有利于保护原始数据。

相关文章
相关标签/搜索