時間:2024-02-03 17:22作者:下載吧人氣:28
前幾天網友問MongoDB數據庫權限方面的問題。當時大致的了解了一下,這周仔細了解了一下。對于一個數據庫不可能隨意的訪問,肯定要有寫訪問限制。
在了解這個之前首先熟悉下shell客戶端。打開shell客戶端的方法:mongo.關閉數據庫引擎的話可以使用db.shutdownServer().
MongoDB的shell提供了一些命令,可以從shell提示符執行它們。
MongoDB中的shell提供了許多用于執行管理功能的方法。
命令、方法和MongoDB shell的數據結構都是基于交互式Javascript的。管理MongoDB的一個很好的方法是創建可以運行多次的腳本,或者可以隨時在特定的時間運行的腳本,如在升級時運行的腳本。腳本文件可以包含任意數量的MongoDB命令,使用javascript代碼,如條件語句和循環。有兩種運行MongoDB shell腳本的方式。
1.使用–eval
該–eval參數接受一個Javascript字符串或Javascript文件并啟動MongoDB的shell,并立即執行Javascript。
2.使用load(script_path)方法運行MongoDB腳本。
不管是創建用戶管理員賬號還是數據庫管理員賬號都是用addUser()方法添加用戶賬戶,MongoDB 3.0之后用createUser()代替,再用adduser()會提示adduser()不是function,下面的截圖能看到提示,該方法接受一個document對象,允許指定該用戶的用戶名、角色和密碼。下面是document對象可以指定的字段:
用戶和角色是多對多的關系,一個用戶可以對應多個角色,一個角色可以擁有多個用戶。用戶角色的不同對應的權限也是不一樣的。下面是一些分配給用戶的常見的角色。
可以使用removeUser(<username>)方法刪除MongoDB的用戶。需要先切換到該用戶所在的數據庫。在MongoDB 3.0后使用dropUser(<username>),下面配置時截圖就能看到提示。
MongoDB提供在數據庫級別上的驗證和授權,意味著用戶存在于單個數據庫的上下文中。為了實現基本的身份驗證,MongoDB把用戶憑據存儲在每個數據中名為system.users的集合中。
當還沒在admin數據庫中定義用戶時,MongoDB允許在本地主機上的連接有對數據庫的完全管理訪問。因此,設置新的MongoDB實例的第一步是創建用戶管理員和數據庫管理員賬戶。用戶管理員具有在admin和其他數據庫中創建用戶賬戶的功能。還需要創建一個可以當作超級用戶使用的數據庫管理員賬戶,用來管理數據庫、集群、復制和MongoDB的其他方面。
用戶管理員賬號應只有創建用戶的權限,而沒有管理數據庫或其他管理功能。使數據庫管理和用戶賬戶管理完全分離。用戶管理賬戶應該以userAdminAnyDatabase作為唯一的角色來創建。
上面截圖可以看到使用用戶管理員賬戶來查詢collection是報錯,這是因為用戶管理員賬戶只是用來管理用戶的,不能管理數據庫。
用戶管理員賬戶已經創建需要使用–auth參數重啟MongoDB數據庫
上面截圖中創建了一個admin數據庫的數據庫管理員,使用數據庫管理員顯示collections是可以顯示的,而使用用戶管理員顯示時報錯。
到此這篇關于MongoDB數據庫權限管理的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。
網友評論