MongoDB 權限認證

  MongoDB已經使用很長一段時間了,基於MongoDB的數據存儲也一直沒有使用到權限訪問(MongoDB默認設置爲無權限訪問限制),由於考慮到數據安全的緣由特意花了一點時間研究了一下,網上搜出來的解決方法大都是3.0如下的版本的,因此不適合3.0+以上的版本。我如今用的版本是MongoDB3.2.7,在windows10系統上進行的驗證,估計在win7/win8上應該相似。sql

  和其它數據庫同樣,權限的管理都差很少同樣。mongodb存儲全部的用戶信息在admin 數據庫的集合system.users中,保存用戶名、密碼和數據庫信息。mongodb默認不啓用受權認證,只要能鏈接到該服務器,就可鏈接到mongod。若要啓用安全認證,須要更改配置文件參數authmongodb

  一、首先,不使用--auth參數啓動MongoDB數據庫

  

systemLog:
    destination: file
    path: C:\data\dblog\mongod.log
    logAppend: true
storage:
    journal:
        enabled: true
    dbPath: C:\data\db
net:
    port: 27017

#security:
    #authorization: enabled

 

  mongod -f C:\data\mongodb.confwindows

  

 

  二、啓動mongo, 啓用admin數據庫安全

  

 三、創建一個超級用戶admin,命令以下:  服務器

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

  

  四、查看用戶集合spa

  db.system.users.find()3d

  

  五、如今啓用authcode

  在重啓mongod以前,修改配置文件mongo.config,在最下面加入這麼一行blog

  auth = on

   重啓mongod

  mongod -f C:\data\mongodb.conf 

  

  而後重啓mongo,啓用admin數據庫,

  顯示全部數據庫 : show dbs, 發現已經沒有權限了

  

  啓用 auth

  db.auth('admin', 'admin123')  返回1表示成功

  

 

  再次執行show dbs

  

  六、 啓用ta數據庫,查看該數據庫集合

  

  很遺憾沒有權限,admin雖然是超級管理員,可是對具體的數據庫,仍是須要有對應的用戶,用戶是和數據庫走的,所以還須要創建ta數據庫的用戶

  創建針對ta數據庫的用戶

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

  須要注意的是在創建ta數據庫用戶的時候必定要先啓用ta數據庫,不然會出現問題

  use ta

  

 

   

  執行 db.auth('test1','test1')

  而後再對ta數據庫進行相應的操做。

  

相關文章
相關標籤/搜索