基于業(yè)務(wù)需求炒事,18年開發(fā)了一些小型爬蟲方咆。因?yàn)榘惭b簡單加上想多學(xué)點(diǎn)nosql
相關(guān)的知識(shí)浸船,于是在本地使用了MongoDB 4.0進(jìn)行存儲(chǔ)。由于之前的數(shù)據(jù)并不太重要疗韵,再加上只是用于存儲(chǔ)使用兑障,便任其裸奔。最近要基于業(yè)務(wù)數(shù)據(jù)進(jìn)行可視化開發(fā)工作蕉汪,再往前段時(shí)間也爆出了未設(shè)置賬戶密碼的數(shù)據(jù)泄露新聞旺垒,于是嘗試對(duì)本地的MongoDB數(shù)據(jù)庫設(shè)置用戶密碼。
默認(rèn)情況下肤无,MongoDB是沒有超級(jí)管理員賬戶的,除非已經(jīng)再admin中創(chuàng)建了用戶并修改了配置文件骇钦,否則不用進(jìn)行任何認(rèn)證即可訪問宛渐、修改數(shù)據(jù)。
設(shè)置用戶管理員
- 管理員身份打開cmd
- 切換到 MongoDB 安裝路徑(...\Mongodb\bin)
- cmd中運(yùn)行
mongo.exe
-
use admin
切換到admin數(shù)據(jù)庫 -
db.createUser({user:"myAdmin",pwd:"666666",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
創(chuàng)建任何數(shù)據(jù)庫上的用戶管理員賬戶和密碼眯搭。
MongoDB內(nèi)置的數(shù)據(jù)庫角色有:
1. 數(shù)據(jù)庫用戶角色:read窥翩、readWrite;
2. 數(shù)據(jù)庫管理角色:dbAdmin、dbOwner鳞仙、userAdmin寇蚊;
3. 集群管理角色:clusterAdmin、clusterManager棍好、clusterMonitor仗岸、hostManager允耿;
4. 備份恢復(fù)角色:backup、restore扒怖;
5. 所有數(shù)據(jù)庫角色:readAnyDatabase较锡、readWriteAnyDatabase、userAdminAnyDatabase盗痒、dbAdminAnyDatabase
6. 超級(jí)用戶角色:root
7. 內(nèi)部角色:__system
引用自: https://www.cnblogs.com/qk2014/p/9253506.html
- 使用
db.auth({user: "myAdmin", pwd: "666666"})
命令可以查看用戶是否成功蚂蕴,成功返回1。
至此俯邓,用戶管理員創(chuàng)建成功骡楼,這里創(chuàng)建的是可以管理任何數(shù)據(jù)庫的角色。
但目前不使用用戶名仍然可以直接訪問稽鞭、修改所有數(shù)據(jù)庫鸟整。
修改配置文件
還是安裝目錄下,用編輯器打開mongod.cfg
川慌,取消 security
的注釋螟碎,修改成:
security: authorization: enabled
。
管理員模式打開cmd藐俺,使用如下命令重啟MongoDB服務(wù):
net stop Mongodb
net start Mongodb
再次連接數(shù)據(jù)庫就需要賬戶和密碼驗(yàn)證了百拓。
針對(duì)具體數(shù)據(jù)庫創(chuàng)建賬戶、密碼
同第一步的流程琴拧,運(yùn)行mongo.exe
進(jìn)入操作界面:
- 使用
use 數(shù)據(jù)庫名字
切換到特定數(shù)據(jù)庫 - 運(yùn)行
db.createUser({user:"dboperator",pwd:"666666",roles:[{role:"readWrite",db:"admin"}]})
給數(shù)據(jù)庫創(chuàng)建了dboperator角色降瞳,只對(duì)該數(shù)據(jù)庫擁有讀寫的權(quán)限。
修改Robo 3T中的連接設(shè)置
我的圖形客戶端使用的是Robo 3T蚓胸,之前使用的一直是默認(rèn)連接挣饥。經(jīng)過本文的一番設(shè)置之后,默認(rèn)連接肯定是失效了沛膳。
在如圖界面設(shè)置了用戶密碼及訪問的數(shù)據(jù)庫之后扔枫,點(diǎn)擊 test 測試連接,通過后保存即可锹安。
之后通過修改過的連接就可以很輕松得訪問用戶對(duì)應(yīng)的數(shù)據(jù)庫了短荐,可以看到角色不同,所能查看的數(shù)據(jù)庫范圍也不盡相同叹哭。