MongoDB 設置參數


 

服務器配置文件分析

bin目錄下的mongod.cfg是服務器的配置文件,文件中主要的配置參數:

1、數據庫文件的存放位置

 

 

2、服務器日志文件的存放位置

 

 

3、默認的IP地址、端口號

 

 

 

 

設置密碼

默認情況下,MongoDB的服務器地址是127.0.0.1,端口號是27017,存儲數據庫管理員信息的admin數據庫是空的,即沒有管理員賬戶,任何客戶端可以直接連接服務器,不需要認證。

好處是,用戶可以即時上手,不用擔心被一堆配置弄的心煩意亂。壞處是,所有人都可以直接訪問並修改數據庫數據。

 

1、使用admin數據庫,創建一個管理員賬戶

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

會提示創建成功。role指定賬戶角色(權限),db指定此賬戶管理的是哪個db。因為是roles:[],數組,所以可同時設置多個role。

如果是role中帶有AnyDatabase,則可管理所有數據庫。

如果role中不帶AnyDatabase,則只能管理指定的db。

不管是哪種,這個賬戶只能進入指定的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

 

 

2、修改配置文件mongod.cfg,使用密碼。

我們看到默認是注釋了的,不使用安全驗證。

取消注釋,修改如下:

注意空格、縮進,authorization冒號后面有一個空格。

security:
  authorization: enabled

 

3、重啟MongoDB服務。

 

4、 

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表示不通過。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM