mongoDB數據庫啟用身份認證


前面已經分享了如何安裝及啟動MongoDB數據庫以及Python中在scrapy框架下如何將爬取到的數據保存到MongoDB數據庫中。現在我們已經將數據保存到數據庫中了,但現在其他人只要知道我們的IP就可以遠程操作我們的MongoDB數據庫了,可以隨意增、刪、改、查我們數據庫的數據,是不是很可怕!!!所以為了數據安全,我們要啟用身份驗證,啟用身份驗證當然還有其他作用,比如我們某款產品的后台要調用數據,為了數據安全可以為該數據庫新建一個只有只讀權限的賬號,下面我們來看看如何啟用身份認證。具體步驟如下:

1啟用MongoDB無需訪問控制

如果已經按照如何安裝及啟動MongoDB數據庫中分享的步驟完成數據庫的安裝與啟動。啟動MongoDB可采用以下兩種方式:

1.在本地服務中查看MongoDB服務是否開啟,若未啟動點擊啟動即可。

本地服務打開方式:

win7:

  1. 右鍵點擊桌面的【計算機】圖標,選擇【管理】選項,點擊打開

  2. 進入管理界面,點擊打開【服務和應用程序】,可以看到【服務選項】點擊打開即可

  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的用戶驗證,主要可分為七個步驟,這里我們開始新建的是超級管理員,而不是用戶管理員兩個都可以,但建議新建超級管理員。開啟用戶驗證很重要,它可以有效保護我們的數據不被輕易盜取,如果登陸用戶只有只讀權限他就不可以增加、刪除、更改原始數據,這樣也有利於保護原始數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM