首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

MongoDB 2.6+ 使用者建立與權限設定完整教學 (解決 auth failed 問題)

     編輯:關於SqlServer

問題背景

MongoDB 2.6 版本大幅修改使用者管理機制,db.addUser() 已棄用,改用 db.createUser()。若 Shell 版本與 Server 版本不匹配 (如 Server 2.6 + Shell 2.4),將導致 auth failed (code 18) 錯誤。

版本檢查與 Shell 更新


# 檢查 Server 版本
mongo --eval "db.version()"

# 檢查 Shell 版本
mongo --version

# Ubuntu/Debian 更新 Shell 至 2.6
sudo apt-get remove mongodb-clients
sudo apt-get autoremove && sudo apt-get autoclean
sudo apt-get install mongodb-org-shell=2.6.1

MongoDB 2.6+ 正確建立使用者語法


use test2

db.createUser({
    user: "test",
    pwd: "admin",
    roles: [
        { role: "readWrite", db: "test2" },   // 讀寫權限
        { role: "dbAdmin", db: "test2" }      // 資料庫管理權限 (可建索引、統計等)
    ]
})

角色權限說明

內建角色權限範圍
read唯讀
readWrite讀寫
dbAdmin資料庫管理 (索引、統計、驗證等),無資料讀寫權
userAdmin使用者管理 (建立/修改/刪除使用者、角色)
dbOwner資料庫擁有者 (包含 readWrite + dbAdmin + userAdmin)
root超級管理員 (僅 admin 資料庫可建立),擁有所有資料庫權限

驗證連線測試


# 使用建立的帳號連線
mongo 192.168.1.111/test2 -u test -p admin

# 連線後驗證權限
show collections
db.testCollection.insert({x:1})
db.testCollection.find()

常見坑點與解決

  • Shell/Server 版本不匹配:務必對齊版本,或使用相容的驅動程式版本。
  • 未啟用驗證:啟動參數加 --auth 或設定檔 security.authorization: enabled。
  • 角色資料庫錯誤:roles 陣列中每個角色物件必須指定 db 欄位,指出角色生效的資料庫。
  • 密碼特殊字元:密碼含特殊字元時,命令列需適當跳脫或使用設定檔/環境變數傳遞。

生產環境建議

  1. 啟用 TLS/SSL 加密傳輸 (net.ssl.mode: requireSSL)。
  2. 建立專用服務帳號,最小權限原則 (唯讀帳號僅給 read 角色)。
  3. 定期輪換密碼,審計登入日誌 (auditLog)。
  4. 使用 Keyfile 或 x.509 憑證進行 Replica Set 成員間驗證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved