mongoDB設置用戶權限


mongoDB設置權限認證

安裝MongoDB后auth認證默認是關閉的

如何開啟權限認證?

cmd打開面板

打開數據庫:輸入mongod   --dbpath   文件夾絕對路徑  --auth

此時,無法查看數據庫 , 但可以進入指定數據庫

 

 

 

 此時admin庫是不可見的(舊版本不可見,新版本里只是admin下的用戶相關的system.users不可見)

 

進入數據庫

 

 

 創建權限賬號

 

user:用戶名

pwd:密碼

db:指定該用戶的數據庫,admin是用於權限控制的數據庫,如果沒有需要新建一個

roles:指定用戶的角色,可以用一個空數組給新用戶設定空角色;在roles字段,可以指定內置角色和用戶定義的角色。role里的角色可以選:

Built-In Roles(內置角色):
    1. 數據庫用戶角色:read、readWrite;
    2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 備份恢復角色:backup、restore;
    5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超級用戶角色:root  
    // 這里還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 內部角色:__system

具體角色的功能: 

Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限

創建所有數據庫管理用戶

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

創建指定數據庫管理用戶

db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "readWrite", db: "admin" }] })

注意:

1.創建用戶時指定的built-in roles(數據庫操作權限)也是與庫綁定的,指定的哪個庫的角色,就擁有哪個庫的操作權限

2.不同的庫下可以存在相同的用戶名,即admin.root用戶和test.root用戶是可以同時存在的。

3.一般來說創建一個root角色的超級用戶root即可(或一個__system權限的system用戶),創建一些普通權限的用戶做日常操作。

切換到對應權限的數據庫進行權限校驗

use admin  //切換到對應權限的數據庫
db.auth("root","root") //對用戶名和密碼進行權限校驗

此時 , 可以對數據庫展開賬戶權限之內的操作

 

 

 

修改密碼

 db.changeUserPassword('root','rootNew')

注意:密碼修改后 , 依舊可以對數據庫進行操作 , 若退出重新登錄,則需要輸入新密碼

 

 

修改權限

 db.grantRolesToUser("test", [{ role: "userAdmin", db: "test" }])

 

 

 

注意:修改過后 , 用戶依然還保留了修改前的權限 , 此操作相當於增加了用戶權限 , 所以需要解除舊權限

 

 

 

解除權限

 

 

刪除用戶

 

 

 

 

關於集群用戶和集群驗證具體還未涉及 , 持續學習中....

 

https://www.cnblogs.com/swordfall/p/10841418.html

https://www.cnblogs.com/leohahah/p/11064093.html


免責聲明!

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



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