mongodb--用戶管理

文章目錄

  • MongoDB 用戶管理
    • 1. 連接到 MongoDB
    • 2. 用戶創建
      • 2.1 創建管理員用戶
      • 2.2 創建特定數據庫用戶
      • 2.3 常用內置角色
    • 3. 用戶管理操作
      • 3.1 查看所有用戶
      • 3.2 查看特定用戶信息
      • 3.3 更新用戶密碼
      • 3.4 添加用戶角色
      • 3.5 移除用戶角色
      • 3.6 刪除用戶
    • 4. 權限修改
      • 4.1 創建自定義角色
      • 4.2 將自定義角色分配給用戶
    • 5. 啟用身份驗證
    • 6. 允許遠程連接
      • 6.1 修改綁定IP
      • 6.2 防火墻設置
      • 6.3 安全注意事項
    • 7. 使用認證連接
    • 8. 最佳實踐
    • 9. 常見問題解決
      • 9.1 忘記管理員密碼
      • 9.2 連接被拒絕

MongoDB 用戶管理

1. 連接到 MongoDB

在開始管理用戶之前,首先需要連接到 MongoDB 實例:

# 連接到本地 MongoDB 實例
mongo# 或者連接到遠程實例
mongo --host <hostname> --port <port> -u <username> -p <password>

2. 用戶創建

2.1 創建管理員用戶

最大權限

mongos> use admin
mongos> db.createUser({user: "admin", pwd: "admin123", roles: ["root"]})

首先創建一個具有用戶管理權限的管理員賬戶:

// 切換到 admin 數據庫
use admin// 創建管理員用戶
db.createUser({user: "adminUser",pwd: "securePassword123",  // 實際使用時請設置更復雜的密碼roles: [{ role: "userAdminAnyDatabase", db: "admin" },{ role: "readWriteAnyDatabase", db: "admin" },{ role: "dbAdminAnyDatabase", db: "admin" },{ role: "clusterAdmin", db: "admin" }]
})

2.2 創建特定數據庫用戶

為特定數據庫創建用戶:

// 切換到目標數據庫
use myDatabase// 創建具有讀寫權限的用戶
db.createUser({user: "appUser",pwd: "appPassword123",roles: [{ role: "readWrite", db: "myDatabase" },{ role: "dbAdmin", db: "myDatabase" }]
})

2.3 常用內置角色

  • read: 只讀權限
  • readWrite: 讀寫權限
  • dbAdmin: 數據庫管理權限
  • userAdmin: 用戶管理權限
  • clusterAdmin: 集群管理權限(僅admin數據庫)
  • dbOwner: 數據庫所有者(包含readWrite, dbAdmin和userAdmin權限)

3. 用戶管理操作

3.1 查看所有用戶

use admin
db.system.users.find()

3.2 查看特定用戶信息

db.getUser("appUser")

3.3 更新用戶密碼

db.updateUser("appUser", {pwd: "newSecurePassword456"
})

3.4 添加用戶角色

db.grantRolesToUser("appUser", [{ role: "read", db: "anotherDatabase" }
])

3.5 移除用戶角色

db.revokeRolesFromUser("appUser", [{ role: "read", db: "anotherDatabase" }
])

3.6 刪除用戶

db.dropUser("appUser")

4. 權限修改

4.1 創建自定義角色

use admin
db.createRole({role: "customAppRole",privileges: [{resource: { db: "myDatabase", collection: "customers" },actions: ["find", "insert", "update"]},{resource: { db: "myDatabase", collection: "orders" },actions: ["find"]}],roles: []
})

4.2 將自定義角色分配給用戶

db.grantRolesToUser("appUser", ["customAppRole"])

5. 啟用身份驗證

要使用戶管理生效,需要在 MongoDB 配置中啟用身份驗證:

  1. 編輯 MongoDB 配置文件(通常位于 /etc/mongod.conf)
  2. 添加或修改以下部分:
security:authorization: enabled
  1. 重啟 MongoDB 服務:
sudo systemctl restart mongod

6. 允許遠程連接

6.1 修改綁定IP

  1. 編輯 MongoDB 配置文件:
net:port: 27017bindIp: 0.0.0.0  # 允許所有IP連接,或指定特定IP
  1. 重啟 MongoDB 服務

6.2 防火墻設置

如果服務器有防火墻,需要開放 MongoDB 端口(默認27017):

sudo ufw allow 27017

6.3 安全注意事項

允許遠程連接時,務必:

  • 使用強密碼
  • 考慮設置網絡層面的訪問控制(如IP白名單)
  • 啟用TLS/SSL加密連接
  • 限制用戶權限到最小必要范圍

7. 使用認證連接

啟用認證后,連接時需要提供憑據:

mongo -u "appUser" -p "appPassword123" --authenticationDatabase "myDatabase"

或者在連接字符串中:

mongo "mongodb://appUser:appPassword123@localhost:27017/myDatabase"

8. 最佳實踐

  1. 遵循最小權限原則,只授予用戶必要的權限
  2. 定期審計用戶和權限
  3. 使用復雜的密碼并定期更換
  4. 生產環境考慮啟用TLS/SSL加密
  5. 對于重要操作,考慮使用審計日志

9. 常見問題解決

9.1 忘記管理員密碼

  1. 暫時關閉認證(修改配置文件,去掉authorization: enabled)
  2. 重啟 MongoDB
  3. 連接到無認證的實例
  4. 重置管理員密碼
  5. 重新啟用認證并重啟

9.2 連接被拒絕

  • 檢查 MongoDB 服務是否運行
  • 檢查防火墻設置
  • 驗證綁定IP配置
  • 檢查認證憑據是否正確

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76314.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek與搜索引擎:AI生成內容如何突破“語義天花板”

一、搜索引擎的“內容饑餓癥”與AI的“產能悖論” 2024年&#xff0c;全球每天新增470萬篇網絡文章&#xff0c;但搜索引擎的索引拒絕率高達68%。這一矛盾的根源在于&#xff1a;算法對“高質量原創”的定義已從“形式獨特性”轉向“認知增值性”。傳統AI生成內容&#xff08;…

YOLO目標檢測應用——基于 YOLOv8目標檢測和 SAM 零樣本分割實現指定目標分割

概述 在當前的計算機視覺領域&#xff0c;目標分割技術正變得越來越重要。市面上有許多分割模型&#xff0c;它們的工作原理大致相似&#xff0c;通常包括收集數據、配置模型以及訓練分割模型等步驟。最終目標是實現精確的目標分割。而隨著 SAM&#xff08;Segment Anything M…

在Flutter中使用BottomNavigationBar和IndexedStack可以實現一個功能完整的底部導航欄

在Flutter中&#xff0c;使用BottomNavigationBar和IndexedStack可以實現一個功能完整的底部導航欄。BottomNavigationBar用于顯示底部的導航按鈕&#xff0c;而IndexedStack則用于管理頁面的切換&#xff0c;確保每個頁面的狀態得以保留&#xff08;即頁面不會因為切換而重新構…

【10】數據結構的矩陣與廣義表篇章

目錄標題 二維以上矩陣矩陣存儲方式行序優先存儲列序優先存儲 特殊矩陣對稱矩陣稀疏矩陣三元組方式存儲稀疏矩陣的實現三元組初始化稀疏矩陣的初始化稀疏矩陣的創建展示當前稀疏矩陣稀疏矩陣的轉置 三元組稀疏矩陣的調試與總代碼十字鏈表方式存儲稀疏矩陣的實現十字鏈表數據標簽…

微服務篇——SpringCloud

服務注冊 Spring Cloud5大組件有哪些&#xff1f; 服務注冊和發現是什么意思&#xff1f;Spring Cloud如何實現服務注冊發現&#xff1f; nacos與eureka的區別 負載均衡 如何實現負載均衡&#xff1f; Ribbon負載均衡的策略有哪些&#xff1f; 如何自定義負載均衡的策略&…

【小沐雜貨鋪】基于Three.JS繪制三維數字地球Earth(GIS 、WebGL、vue、react,提供全部源代碼)

&#x1f37a;三維數字地球系列相關文章如下&#x1f37a;&#xff1a;1【小沐學GIS】基于C繪制三維數字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐學GIS】基于C繪制三維數字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

Cursor 在前端需求開發工作流中的應用|得物技術

一、引言 很高興與大家分享現階段 Cursor 在我的工作中的使用體驗。首先是預期管理&#xff0c;本篇文章不會分享 x 個你可能不知道的小技巧&#xff0c;也不會讓你擁有無需自行編碼的能力&#xff0c;同時不涉及 Cursor 工程化方面內容。僅僅是圍繞個人開發流程中的已有問題&…

PyQt學習記錄

PyQt學習記錄 要在界面上 創建一個控件&#xff0c;就需要在程序代碼中 創建 這個 控件對應類 地一個 實例對象。 在Qt系統中&#xff0c;控件&#xff08;widget&#xff09;是 層層嵌套 的&#xff0c;除了最頂層的控件&#xff0c;其他的控件都有父控件。 幾個函數 函數mo…

react: styled-components實現原理 標簽模版

styled-components是針對react中一個前端廣泛使用的css-in-js樣式庫B站 利用標簽模版 利用ES6中的 標簽模版文檔標簽模板其實不是模板&#xff0c;而是函數調用的一種特殊形式。“標簽”指的就是函數&#xff0c;緊跟在后面的模板字符串就是它的參數。 let a 5; let b 10;…

網絡安全應急響應之文件痕跡排查:從犯罪現場到數字狩獵的進化論

凌晨3點&#xff0c;某金融企業的服務器突然告警&#xff0c;核心數據庫出現未知進程訪問。安全團隊緊急介入時&#xff0c;攻擊者已抹去日志痕跡。在這場與黑客的時間賽跑中&#xff0c;文件痕跡排查成為破局關鍵。本文將帶您深入數字取證的"案發現場"&#xff0c;揭…

多模態大語言模型arxiv論文略讀(七)

MLLM-DataEngine: An Iterative Refinement Approach for MLLM ?? 論文標題&#xff1a;MLLM-DataEngine: An Iterative Refinement Approach for MLLM ?? 論文作者&#xff1a;Zhiyuan Zhao, Linke Ouyang, Bin Wang, Siyuan Huang, Pan Zhang, Xiaoyi Dong, Jiaqi Wang,…

idea插件:AICommit,智能生成Git提交信息

AICommit&#xff1a;智能生成Git提交信息的IDEA插件指南 一、AICommit插件介紹 AICommit是一款專為開發者設計的IntelliJ IDEA插件&#xff0c;它利用人工智能技術自動生成清晰、規范的Git提交信息(Commit Message)。該插件能夠分析你的代碼變更&#xff0c;理解修改的上下文…

js 拷貝-包含處理循環引用問題

在 JavaScript 中&#xff0c;拷貝對象和數組時需要特別注意&#xff0c;因為對象和數組是引用類型&#xff0c;直接賦值只會復制引用&#xff0c;而不是實際的數據。以下是幾種常見的拷貝方法及其應用場景&#xff1a; 1. 淺拷貝&#xff08;Shallow Copy&#xff09; 淺拷貝…

oracle將varchar2 轉為clob類型存儲。 oracle不支持直接使用sql,將 varchar2 到clob的類型轉換,需要下面操作

將一個現有表中的 VARCHAR2 列數據遷移到一個 CLOB 列的過程。以下是對每一步操作的說明&#xff1a; 1. 添加一個新的 CLOB 類型列 首先&#xff0c;向表中添加一個新的 CLOB 類型的列。這個列將用來存儲原本的 VARCHAR2 數據。 ALTER TABLE your_table ADD (new_column CL…

Dynamics 365 Business Central Recurring Sales Lines 經常購買銷售行 來作 訂閱

#D365 BC ERP# #Navision# 前面有節文章專門介紹了BC 2024 Wave 2 支持的更好的Substription & Recurring Billing。 其實在D365 BC ERP中一直有一個比較簡單的訂閱模塊Recrring Sales Lines。本文將介紹一下如何用Recurring Sales Lines來 實施簡易的訂閱Substription。具…

算法比賽中常用的數學知識

一、求某個整數的正約數個數與正約數之和 1.1求某個正整數N的正約數個數 public class Main {public static void main(String[] args) {System.out.println(count(360));//結果為24}public static long count(long number){long count1;for(long i2;i<Math.sqrt(number);…

虛擬Ubuntu系統 開機提示:SMBus Host controller not enabled 后正常啟動,去除這個提示提升開機速度。

如題&#xff0c;虛擬機中的Ubuntu系統開機提示&#xff1a;SMBus Host controller not enabled&#xff0c;雖然能正常啟動&#xff0c;但不僅影響開機速度&#xff0c;而且還膈應人。 使用命令查看模塊 lsmod | grep piix4 發現i2c_piix4有問題&#xff0c; 禁止 i2c_piix4…

NLP基礎知識 與 詞向量的轉化方法 發展

目錄 1.NLP 基礎知識點 為什么需要自然語言處理? 自然語言處理有哪些分類? 自然語言處理有哪些實際應用? 為什么需要自然語言處理? 自然語言處理有哪些分類? 自然語言處理有哪些實際應用? 自然語言處理的技術/工作原理是什么? 2.NLP文本轉化為詞向量的方法 2…

【FPGA基礎學習】狀態機思想實現流水燈

目錄 一、用狀態機實現LED流水燈1.狀態機思想簡介1. 1基本概念1.2.核心要素1.3分類與模型 2.LED流水燈 二、CPLD與FPGA1.技術區別2.應用場景3.設計選擇建議 三、HDLbits組合邏輯題目 一、用狀態機實現LED流水燈 1.狀態機思想簡介 1. 1基本概念 ? 狀態機&#xff08;Finite …

CSS語言的游戲AI

CSS語言的游戲AI探討 隨著技術的飛速發展&#xff0c;游戲行業也在不斷地革命和演變。游戲中的人工智能&#xff08;AI&#xff09;作為一種重要的設計元素&#xff0c;其復雜性和智能程度對游戲的體驗、玩法和整體表現都有著深遠的影響。近年來&#xff0c;CSS&#xff08;Ca…