溫馨提示×

MongoDB在Ubuntu上的權限管理怎么做

小樊
36
2025-09-23 10:41:20
欄目: 云計算

MongoDB在Ubuntu上的權限管理指南

一、權限管理前置準備

在Ubuntu上進行MongoDB權限管理前,需完成以下基礎步驟:

  1. 安裝MongoDB:通過Ubuntu官方倉庫或MongoDB官方倉庫安裝最新穩定版(如MongoDB 6.0+),確保服務可正常啟動。
  2. 啟動MongoDB服務:使用sudo systemctl start mongod啟動服務,通過sudo systemctl status mongod確認服務狀態為“active (running)”。

二、啟用MongoDB身份驗證

權限管理的核心是啟用訪問控制,需修改MongoDB配置文件并重啟服務:

  1. 編輯配置文件:打開/etc/mongod.conf,找到security section,添加或修改以下內容:
    security:
      authorization: enabled
    
  2. 重啟服務生效:保存配置后,執行sudo systemctl restart mongod使身份驗證生效。

三、創建管理員用戶(管理數據庫用戶)

管理員用戶用于管理所有數據庫的用戶和權限,需在admin數據庫中創建:

  1. 連接MongoDB Shell:使用mongo命令進入交互式Shell。
  2. 切換至admin數據庫:執行use admin。
  3. 創建管理員用戶:通過db.createUser()創建具備用戶管理權限的用戶(如adminUser),示例:
    db.createUser({
      user: "adminUser",
      pwd: "StrongAdminPassword123!",
      roles: ["userAdminAnyDatabase", "readWriteAnyDatabase"]
    })
    
    • userAdminAnyDatabase:允許管理所有數據庫的用戶賬戶。
    • readWriteAnyDatabase:允許對所有數據庫進行讀寫操作(可選,根據需求調整)。

四、創建數據庫用戶并分配權限

為目標數據庫創建專用用戶,并分配最小必要權限(遵循最小權限原則):

  1. 以管理員身份連接:使用管理員用戶登錄,例如:
    mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
    
  2. 切換至目標數據庫:執行use myDatabase(將myDatabase替換為實際數據庫名)。
  3. 創建數據庫用戶并分配角色:通過db.createUser()創建用戶(如myUser),并分配對應角色,示例:
    • 基礎讀寫權限(適合應用連接):
      db.createUser({
        user: "myUser",
        pwd: "AppUserPassword456!",
        roles: ["readWrite"]
      })
      
    • 高級管理權限(適合數據庫管理員):
      db.createUser({
        user: "dbAdmin",
        pwd: "DBAdminPassword789!",
        roles: ["dbOwner"]
      })
      
    • 自定義權限組合(如讀寫+索引管理):
      db.grantRolesToUser("myUser", [
        { role: "readWrite", db: "myDatabase" },
        { role: "dbAdmin", db: "myDatabase" }
      ])
      
    常見內置角色說明:
    • read:僅讀取數據。
    • readWrite:讀取+寫入數據。
    • dbOwner:數據庫所有者(包含readWrite、dbAdmin等權限)。
    • userAdmin:管理當前數據庫的用戶和角色。

五、驗證用戶權限

使用創建的用戶連接MongoDB,驗證權限是否生效:

  1. 普通用戶連接
    mongo -u myUser -p AppUserPassword456 --authenticationDatabase myDatabase
    
  2. 測試權限
    • 執行show dbs:若用戶無listDatabases權限,僅顯示當前數據庫。
    • 執行db.collection.insert({name: "test"}):若用戶有readWrite權限,可成功插入數據;否則報錯“unauthorized”。

六、權限管理進階操作

  1. 修改用戶密碼:使用db.changeUserPassword(),例如:
    use admin
    db.changeUserPassword("adminUser", "NewStrongPassword123!")
    
  2. 刪除用戶:使用db.dropUser(),例如:
    use myDatabase
    db.dropUser("myUser")
    
  3. 查看用戶權限:使用db.getUser(),例如:
    use myDatabase
    db.getUser("myUser")
    
  4. 限制IP訪問:修改/etc/mongod.conf中的net.bindIp,僅允許特定IP訪問(如本地和公司IP):
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.1.100
    
    重啟服務后生效:sudo systemctl restart mongod。

注意事項

  • 強密碼策略:使用包含大小寫字母、數字和特殊字符的復雜密碼,避免使用默認密碼。
  • 最小權限原則:僅為用戶分配完成工作所需的最小權限,降低安全風險。
  • 定期審計:定期檢查用戶權限,刪除閑置賬戶,更新密碼。
  • 備份配置:修改配置文件前備份原文件(如sudo cp /etc/mongod.conf /etc/mongod.conf.bak)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女