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