MongoDB身份認證機制揭秘!

公众号-JavaEdge發表於2024-11-23

檢查MongoDB伺服器的身份驗證狀態,使用MongoDB的shell或者命令列工具。

1 使用MongoDB Shell

1.1 連線到admin資料庫

因為大多數身份驗證相關的命令需要在admin資料庫中執行:

use admin

1.2 檢查伺服器的身份驗證狀態

db.runCommand({getParameter: 1, authenticationMechanisms: 1})

如伺服器啟用身份驗證,會看到類似輸出:

{
  "authenticationMechanisms" : [
    "SCRAM-SHA-256",
    "SCRAM-SHA-1"
  ],
  "ok" : 1
}

2 使用mongostat

一個監控MongoDB例項的工具。你可以使用它來檢查伺服器的狀態,包括身份驗證狀態。

  1. 在命令列中輸入以下命令
mongostat --uri "mongodb://localhost:27017/admin"

如果伺服器啟用了身份驗證,mongostat會提示你輸入使用者名稱和密碼。

2 db.auth()

如已連線到MongoDB伺服器,db.auth()測試身份驗證,如:

3 建立管理員使用者

執行命令前,確保MongoDB伺服器已經啟用了身份驗證。否則,這個命令將不會起作用。

建立新使用者:

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

roles指定使用者角色。userAdminAnyDatabase角色允許使用者在所有資料庫中建立和修改使用者。

執行成功的輸出:

{
  "ok" : 1
}

可用這個使用者名稱和密碼來連線到MongoDB伺服器並進行身份驗證。

MongoDB 4.0或更高版本,用SCRAM-SHA-256身份驗證機制。可在db.createUser()新增mechanisms欄位:

db.createUser({
  user: "myUser",
  pwd: "myPassword",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ],
  mechanisms: [ "SCRAM-SHA-256" ]
})

建立使用者後,測試身份驗證:

db.auth("myUser", "myPassword")

如果身份驗證成功,你會看到1,否則0

關注我,緊跟本系列專欄文章,咱們下篇再續!

作者簡介:魔都架構師,多家大廠後端一線研發經驗,在分散式系統設計、資料平臺架構和AI應用開發等領域都有豐富實踐經驗。

各大技術社群頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。

負責:

  • 中央/分銷預訂系統效能最佳化
  • 活動&券等營銷中臺建設
  • 交易平臺及資料中臺等架構和開發設計
  • 車聯網核心平臺-物聯網連線平臺、大資料平臺架構設計及最佳化
  • LLM Agent應用開發
  • 區塊鏈應用開發
  • 大資料開發挖掘經驗
  • 推薦系統專案

目前主攻市級軟體專案設計、構建服務全社會的應用系統。

參考:

  • 程式設計嚴選網

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章