mongodb受權認證 介紹

mongodb存儲全部的用戶信息在admin 數據庫的集合system.users中,保存用戶名、密碼和數據庫信息。mongodb默認不啓用受權認證,只要能鏈接到該服務器,就可鏈接到mongod。若要啓用安全認證,須要更改配置文件參數auth
官方文檔:https://docs.mongodb.com/manual/tutorial/enable-authentication/

  • db.createUser( )函數介紹
1:建立一個root用戶,角色爲userAdminAnyDatabase,所以root用戶對數據庫具備管理權限,可是不具有操做權限
db.createUser({user:"root",pwd:"123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }]});
 
2:createUser()方法說明
user:定義用戶名
pwd:設置密碼
roles:指定用戶的角色,能夠用一個空數組給新用戶設定空角色; 在roles字段,能夠指定內置角色和用戶定義的角色。
db:指定用戶對哪一個數據庫具備管理員權限
 
3:角色種類說明
Built- In Roles(內置角色):
①. 數據庫用戶角色: read、readWrite;
②. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
③. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
④. 備份恢復角色:backup、 restore;
⑤. 全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
⑥. 超級用戶角色:root
// 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
⑦. 內部角色:__system
 
4:角色對應的意義說明
Read:容許用戶讀取指定數據庫
readWrite:容許用戶讀寫指定數據庫
dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級帳號,超級權限
 
5:查看受權表
db.system.users.find();
 
6:此時退出MongoDB,且編輯配置文件/etc/mongod. conf, 添加
auth=true(針對於2.6版本)
security:(針對於3.4版本)
authorization: enabled
 
7:能夠在鏈接數據庫的時候認證,也能夠在登入時候認證,這裏使用登入以後認證的方式
show dbs; (會報錯,由於沒有管理受權)
db.auth("root", "123456") 受權以後再查看數據庫就沒有問題了
 
8:此時登入使用的是root用戶,角色是管理角色,可是不具有對數據庫的操做權限
use test;
show collections; (會報錯,由於沒有操做權限)
 
9:再次建立一個用戶: test,讓其對test具備讀寫操做, 且切換用戶爲test
db.createUser({user:"test",pwd:"test", roles: [{ role: "readWrite", db: "test" }]});
db.auth("test", "test")
 
10:再次查看 test庫的表,發現能夠查看了
show collections;
 
11:其實,若是須要建立一個用戶具備管理權限且同時具備操做權限,那麼這個用戶的角色必須是root
db.createUser({user:"yhy",pwd:"123456", roles: [{ role: "root", db: "admn" }]});
相關文章
相關標籤/搜索