bin目錄下的mongod.cfg是服務器的配置文件,文件中主要的配置參數:mongodb
一、數據庫文件的存放位置數據庫
二、服務器日誌文件的存放位置數組
三、默認的IP地址、端口號安全
默認狀況下,MongoDB的服務器地址是127.0.0.1,端口號是27017,存儲數據庫管理員信息的admin數據庫是空的,即沒有管理員帳戶,任何客戶端能夠直接鏈接服務器,不須要認證。服務器
好處是,用戶能夠即時上手,不用擔憂被一堆配置弄的心煩意亂。壞處是,全部人均可以直接訪問並修改數據庫數據。spa
一、使用admin數據庫,建立一個管理員帳戶rest
use admin
db.createUser({user:"chy",pwd:"abc",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
會提示建立成功。role指定帳戶角色(權限),db指定此帳戶管理的是哪一個db。由於是roles:[],數組,因此可同時設置多個role。日誌
若是是role中帶有AnyDatabase,則可管理全部數據庫。code
若是role中不帶AnyDatabase,則只能管理指定的db。blog
無論是哪一種,這個帳戶只能進入指定的db。好比權限指定爲"userAdminAnyDatabase",db指定爲"admin",此帳戶只能經過數據庫admin的驗證,不能經過其餘數據庫的驗證。要進入admin數據庫後,在admin數據庫中管理全部數據庫。
"userAdminAnyDatabase"是管理全部數據庫,可進行刪除某個數據庫之類的操做,是管理,並不能對某個數據庫進行讀寫。
1. 數據庫用戶角色:read、readWrite;
2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級用戶角色:root
7. 內部角色:__system
二、修改配置文件mongod.cfg,使用密碼。
咱們看到默認是註釋了的,不使用安全驗證。
取消註釋,修改以下:
注意空格、縮進,authorization冒號後面有一個空格。
security:
authorization: enabled
三、重啓MongoDB服務。
四、
exit //先退出客戶端
mongo
use admin
db.auth("username","password") //驗證密碼。1表示經過驗證,0表示不經過。
剛纔建立的帳戶可進入全部db。可建立某個db的帳戶。
db.createUser({user:'chy1',pwd:'abc1',roles:[{role:'readWrite',db:'test'}]})
讀寫權限,此帳戶只能操做數據庫test,且只能對test進行讀寫。
建立好以後就可使用 mongodb://username:password@host[:port]/database 進行鏈接了(須要先 mongo 進入客戶端 )。
注意: