mogodb開啓用戶密碼驗證

mongoDB開啓密碼驗證

使用mongoDB開發測試一直在裸奔,今天在登陸系統時一直報錯,鏈接上數據庫才發現“我方防禦塔被摧毀”,

在這裏插入圖片描述在這裏插入圖片描述

萬惡的黑客!

幸虧我的數據庫沒有什麼真實數據,而且是用docker方式啓動的,

思來想去,痛定思痛,原因還是在自己,偷懶了。爲了避免以後仍然發生這種事情,開發也得加上用戶驗證配置。

下面記錄自己配置用戶和密碼的步驟

配置流程

爲mongodb增加用戶名和密碼分爲以下幾步:

1.在啓動時加上--auth 配置開啓驗證,

docker使用以下命令:

sudo docker run -itd --name mongo_auth -p 27017:27017 mongo --auth

2.進入docker

sudo docker exec -it mongo_auth /bin/bash

如果是非docker,可直接省略此步驟

3.進入數據庫shell

mongo

4.創建數據庫超級管理員

執行

use admin; //切換admin庫
db.createUser(
    {
        user:"root",
        pwd:"pwd",
        roles:["root"]
    }
);//創建用戶

db.auth("root",'root')//驗證是否設置成功,返回1位通過,返回0爲失敗

注意,這裏的用戶不是業務數據庫的用戶,這是一個管理用戶的用戶。業務數據庫用戶是綁定在數據庫中的,下面會創建。創建與用戶相關操作都在 admin數據庫下進行,所以先要切換至admin

5.創建業務數據庫管理員

db.createUser({
  user:"user01",
  pwd:"iamhappy",
  roles:[
    {role:"readWrite",db:"testdb1"},
    {role:"readWrite",db:"testdb2"},
  ]
});
db.auth("root",'root');//驗證是否設置成功,返回1位通過,返回0爲失敗
use testdb1;//切換數據庫
show users;;//顯示該庫下所有用戶

權限含義分別如下

  1. 數據庫用戶角色:read、readWrite;
  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集羣管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
  4. 備份恢復角色:backup、restore;
  5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超級用戶角色:root
  7. 內部角色:__system
  1. Read:允許用戶讀取指定數據庫
  2. readWrite:允許用戶讀寫指定數據庫
  3. dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
  4. userAdmin:允許用戶向system.users集合寫入,可以在指定數據庫裏創建、刪除和管理用戶
  5. clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
  6. readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
  7. readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
  8. userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
  9. dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
  10. root:只在admin數據庫中可用。超級賬號,超級權限

可以配置一個用戶對多個數據庫的權限,一般配置一個就行

6.重啓mongodb

sudo docker restart mongo; //docker
非docker 直接停止,然後 執行 mongo --auth

mongoose鏈接配置

# mongodb 爲協議
# username: 連接數據庫的用戶
# password: 該用戶的密碼
# localhost: 本地的地址(因爲這是本地環境)非本地環境使用數據庫所在域名或者地址
# 27017: mongodb的端口號(這個一般是默認值,也可以進行修改)
# dbname: 數據庫的名字
var db = 'mongodb://username:password@localhost:27017/dbname'

參考鏈接

https://segmentfault.com/a/1190000015603831#item-0-9

https://www.jianshu.com/p/a6b82fd5bbc1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章