MongoDB 設置參數

 

服務器配置文件分析

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"是管理全部數據庫,可進行刪除某個數據庫之類的操做,是管理,並不能對某個數據庫進行讀寫。

 

 

mongodb的內置role

    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  進入客戶端 )。

 

 

注意:

  • MongoDB系統的最高權限是root,根權限
  • 某個數據庫的最高權限是dbOwner,數據庫全部者,可建立索引、進行讀寫等操做。
  • MongoDB的數據庫是相互獨立的,每一個數據庫都有單獨的密碼、權限,互不通用。
  • 給某個數據庫建立帳號,必須限use進入該數據庫,而後db.createUser(),要指定roles中的db爲該數據庫。是在該數據庫中建立該數據庫的帳號,不是說都是在admin數據庫中建立帳號。在admin數據庫中建立的帳號只能用於admin數據庫的驗證,不能用於其餘數據庫的驗證。
  • 能夠用db.auth("username","pwd")  驗證帳戶,1表示經過,0表示不經過。
相關文章
相關標籤/搜索