前面已經分享了如何安裝及啓動MongoDB數據庫以及Python中在scrapy框架下如何將爬取到的數據保存到MongoDB數據庫中。如今咱們已經將數據保存到數據庫中了,但如今其餘人只要知道咱們的IP就能夠遠程操做咱們的MongoDB數據庫了,能夠隨意增、刪、改、查咱們數據庫的數據,是否是很可怕!!!因此爲了數據安全,咱們要啓用身份驗證,啓用身份驗證固然還有其餘做用,好比咱們某款產品的後臺要調用數據,爲了數據安全能夠爲該數據庫新建一個只有只讀權限的帳號,下面咱們來看看如何啓用身份認證。具體步驟以下:mongodb
1啓用MongoDB無需訪問控制shell
若是已經按照如何安裝及啓動MongoDB數據庫中分享的步驟完成數據庫的安裝與啓動。啓動MongoDB可採用如下兩種方式:數據庫
1.在本地服務中查看MongoDB服務是否開啓,若未啓動點擊啓動便可。安全
本地服務打開方式:app
win7:框架
右鍵點擊桌面的【計算機】圖標,選擇【管理】選項,點擊打開scrapy
進入管理界面,點擊打開【服務和應用程序】,能夠看到【服務選項】點擊打開便可spa
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的用戶驗證,主要可分爲七個步驟,這裏咱們開始新建的是超級管理員,而不是用戶管理員兩個均可以,但建議新建超級管理員。開啓用戶驗證很重要,它能夠有效保護咱們的數據不被輕易盜取,若是登錄用戶只有只讀權限他就不能夠增長、刪除、更改原始數據,這樣也有利於保護原始數據。