Mongodb

在 mongodb 上創建啟用身份驗證的數據庫

  • January 27, 2022

我可以為我的“user1”使用特定角色創建數據庫。我已經測試並且使用者“test1”無法在啟用模式授權下創建數據庫。如何創建數據庫?我創建了一個使用者“user1”,它只能訪問這個數據庫“db1”。我可以擁有與 SQL Server 中相同的具有創建新數據庫的權限的使用者“user1”嗎?我可能(完全)錯了,但我想要一個關於這個案例的具體解釋。感謝您的任何幫助和指導。:)

真的很難理解你的問題。

也許您的問題是這樣的:在 MongoDB 中,您有不同的數據庫。Databaseadmin和是預定義的系統數據庫configlocal

使用者和角色是在數據庫中創建的,我認為這對於 MongoDB 來說是一種非常獨特的行為。您可以在任何數據庫中創建使用者和角色,但是admin數據庫應該是通用的。

admin數據庫包括管理整個系統的角色,而不僅僅是一個數據庫。這些角色主要與副本集和分片集群管理功能有關。

在其他數據庫中創建的角色admin只能包含適用於其數據庫的權限,並且只能從其數據庫中的其他角色繼承。

在數據庫中創建的角色admin可以包括適用於任何數據庫或集群資源的權限,並且可以從其他數據庫以及數據庫中的角色繼承admin

所以,我假設user1不是在admin數據庫中創建的。很可能您創建了它test的數據庫,這是預設設置。那麼上述限制適用。

在數據庫中創建使用者admin並授予所需角色:

use admin
db.runCommand( {
      createUser: "user1",
      pwd: "secret",
      roles: [ "readWrite" ]
} )

或者

db.getSiblingDB("admin").runCommand(...)

該使用者可以創建任何數據庫,並且可以寫入任何數據庫。

每個數據庫都提供內置角色 read, readWrite, dbOwner, dbAdmin, userAdmin.

也許你正在尋找這個:

use admin
db.runCommand( {
      createUser: "user1",
      pwd: "secret",
      roles: [ { role: "dbOwner", db: "db1" } ]
} )

dbOwner此命令創建數據庫的使用者和授權db1。他可以寫入數據庫db1,不能創建或讀取任何其他數據庫。

引用自:https://dba.stackexchange.com/questions/306624