mongodb權限認證

1.拉取mongo鏡像

docker pull mongo

2.運行mongo容器

docker run -p 27017:27017 -v  /home/mongo/27017/db:/data/db  -v /home/mongo/conf:/data/configdb  --name mongo -d mongo --auth

/home/mongo/27017/db: 數據持久化存儲路徑

--auth開啓權限認證

注:當mongo啓用auth選項時,用戶需要創建數據庫帳號,訪問時根據帳號信息來鑑權,而數據庫帳號信息就存儲在admin數據庫下

3.進入容器

docker exec -it mongo bash

4.設置權限

  1)登錄

     mongo admin

  2) 切換到admin數據庫

    use admin

  3) 創建超級用戶

    db.createUser({user:"root",pwd:"root",roles:[{role: 'root', db: 'admin'}]})

  4) 創建管理員用戶

    a) 退出

       exit

    b) 使用root用戶登錄

       mongo -uroot -proot

    c) 切換到admin數據庫

       use admin

    d) 創建管理員用戶

      db.createUser({user:"admin",pwd:"admin",roles:[{role: 'userAdminAnyDatabase', db: 'admin'}]})

  5) 創建數據庫權限用戶

    use test

    db.createUser({user:"test",pwd:"test",roles:[{role: 'readWrite', db: 'test'}]})

   注:MongoDB 目前內置了 7 個角色。

    數據庫用戶角色:read、readWrite;
    數據庫管理角色:dbAdmin、dbOwner、userAdmin;
    集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    備份恢復角色:backup、restore;
    所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase;
    超級用戶角色:root;
    內部角色:__system
    這些角色對應的作用如下:

    Read:允許用戶讀取指定數據庫
    readWrite:允許用戶讀寫指定數據庫
    dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
    userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
    clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
    readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
    readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
    userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
    dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
    root:只在admin數據庫中可用。超級賬號,超級權限

  如果覺得使用命令操作麻煩,建議使用Studio 3T客戶端工具操作,很方便,而且還支持sql語法查詢數據。

  工具下載地址:https://robomongo.org/download

 

 

 

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