What happen?
就在剛剛。。。😂
打開我的網站的時候,發現對數據庫的請求都失敗了;我的天都報500了,又是什麼bug🙃
排查到數據庫的時候,打開Robo 3T,發現數據庫沒有了,驚呆😱!!!
繼續查看Mongo日誌
很明顯被刪掉了;
why?
(納悶🙄,別人怎麼知道我密碼,怎麼刪掉的?)在網上查了之後,知道是因爲數據庫沒有添加權限
自己試一試:(居然真的直接登上來了)
Solution:
既然直接就可以登錄,那就給數據庫添加權限了;
先將之前的數據庫的備份通過mongorestore恢復一下;
再次查看dbs的時候,我笑了🤣,在我恢復之際,對方給我新建了一個db
勒索我。。。
創建用戶:
- use video
- db.createUser({user:"user",pwd:"123456",roles:[{role:"readWrite",db:"video"}]} // 可以配置多個db的權限
- show users
role可以選擇以下:
Built-In Roles(內置角色):
1. 數據庫用戶角色:read、readWrite;
2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級用戶角色:root
// 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內部角色:__system具體角色的功能:
Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限
進入 /etc/mongod.conf ,修改mongod的配置,開啓權限驗證
...
security:
authorization: enabled
...
重啓mongod
systemctl start mongod
Authorization:
輸入命令mongo,任何命令都無法成功
切換到對應的數據庫下,輸入用戶的用戶名和密碼,驗證權限
到這裏都OK啦😁