创建一个项目中的一个数据库用户

发布 /api/atlas/v2/groups/{groupId}/databaseUsers

创建指定项目中的一个数据库用户。此 MongoDB Cloud 支持每个项目最多 100 个数据库用户。如果某个项目需要超过 100 个数据库用户,请联系支持部门。要使用此资源,请求的服务帐户或 API 密钥必须具有“项目所有者”角色、“项目图表管理员”角色、“项目流处理所有者”角色或“项目数据库访问管理员”角色。

联系 MongoDB 支持部门

路径参数

  • groupId 字符串 必需

    用于标识项目的唯一 24-十六进制数字字符串。 使用 /groups 端点检索身份验证的用户有权访问权限的所有项目。

    注意:群组和项目是同义词。您的群组 ID 与项目 ID 相同。对于现有群组,群组/项目 ID 保持不变。资源和相应的端点使用“群组”一词。

    格式应符合以下模式:^([a-f0-9]{24})$

查询参数

  • envelope 布尔

    指示应用程序是否将响应包装在envelope JSON 对象中的标志。某些 API 客户端无法访问 HTTP 响应标头或状态代码。要修复此问题,请在查询中设置 Envelope=true。返回结果列表的端点将结果对象用作 envelope。应用程序将状态参数添加到响应正文中。

    默认值为false

  • pretty 布尔

    指示响应正文是否应采用 prettyprint 格式的标记。

    默认值为false

    Prettyprint
application/vnd.atlas.2023-01-01+json

body 必需

在指定项目中创建一个数据库用户。

  • awsIAMType 字符串

    可读的标签,指示新数据库用户是否使用与用户或用户角色关联的 Amazon Web Services (AWS) 身份和访问管理 (IAM) 凭证进行身份验证。

    值为 NONEUSERROLE。默认值为 NONE

  • 数据库名称 字符串 必需

    数据库用户进行身份验证所依据的数据库。 数据库用户必须提供用户名和身份验证数据库才能登录 MongoDB。 如果用户使用Amazon Web Services IAM、x.509、 LDAP或 OIDC 工作负载进行身份验证,此值应为 $external。 如果用户使用 SCRAM-SHA 或 OIDC Workforce 进行身份验证,则此值应为admin

    值为 admin$external。默认值为 admin

  • deleteAfterDate string(date-time)

    MongoDB Cloud 删除用户的日期和时间。此参数以 ISO 8601 时间戳格式(UTC 格式)表示其值,可以包括时区名称。您必须指定发出应用程序编程接口 (API) 请求后一周内的某个未来日期。

  • 描述 字符串

    此数据库用户的描述。

    最大长度为 100

  • groupId 字符串 必需

    用于标识项目的唯一的 24 位十六进制数字字符串。

  • labels 大量[对象]

    包含用于标记和分类 MongoDB 数据库用户的键值对的列表。您定义的标签不会显示在控制台中。

    应用于此MongoDB Cloud 组件的人类可读标签。

    隐藏标签属性 显示标签属性 对象
    • key 字符串

      用于标签和分类该组件的键。

      最小长度为 1,最大长度为 255

    • 字符串

      设立为用于标签和分类该组件的键的值。

      最小长度为 1,最大长度为 255

  • ldapAuthType 字符串

    轻型目录访问协议 (LDAP) 记录的一部分,数据库使用它来对 LDAP 主机上的此数据库用户进行身份验证。

    值为 NONEGROUPUSER。默认值为 NONE

  • oidcAuthType 字符串

    人类可读标签,指示新数据库用户或群组是否使用 OIDC 联合身份验证进行身份验证。如需创建联合身份验证用户,请指定该字段的 USER 的值。如需创建联合身份验证群组,请指定该字段的 IDP_GROUP 的值。

    值为 NONEIDP_GROUPUSER。默认值为 NONE

  • 密码 字符串

    用于根据 databaseName 中指定的数据库验证此数据库用户身份的字母数字字符串。要使用 SCRAM-SHA 进行身份验证,您必须指定此参数。该参数不出现在此响应中。

    最小长度为 8

    SCRAM-SHA
  • 角色 大量[对象]

    提供单个角色与单个适用数据库配对的列表。

    该数据库用户可用的资源范围。

    隐藏角色属性 显示角色属性 对象
    • collectionName 字符串

      此角色适用的集合。

    • 数据库名称 字符串 必需

      向该用户授予访问权限权限的数据库。

    • roleName 字符串 必需

      人类可读标签,用于标识分配给数据库用户的一群组权限。此值可以是内置角色或自定义角色。

      取值为 atlasAdminbackupclusterMonitordbAdmindbAdminAnyDatabaseenableShardingreadreadAnyDatabasereadWritereadWriteAnyDatabase<a custom role name>

  • scopes 大量[对象]

    包含此数据库用户可以访问的集群、MongoDB Atlas 数据湖和 MongoDB Atlas Streams 实例的列表。如果省略,MongoDB Cloud 会授予数据库用户访问项目中的所有集群、MongoDB Atlas 数据湖和 MongoDB Atlas Streams 实例的权限。

    该数据库用户可用的资源范围。

    隐藏范围属性 显示作用域属性 对象
    • 名称 字符串 必需

      人类可读标签,用于标识此数据库用户可以访问权限的集群或MongoDB AtlasAtlas 数据湖。

      格式应符合以下模式:^[a-zA-Z0-9][a-zA-Z0-9-]*$

    • 类型 字符串 必需

      此数据库用户可以访问权限的资源类别。

      值为 CLUSTERDATA_LAKESTREAM

  • 用户名 字符串 必需

    人类可读标签,表示向 MongoDB 进行身份验证的用户。此标签的格式取决于身份验证方法:

    身份验证方法 所需参数 参数值 用户名格式
    AWS IAM awsIAMType ROLE ARN
    AWS IAM awsIAMType 用户 ARN
    x.509 x509Type 客户 RFC2253 标识名
    x.509 x509Type 托管 RFC2253 标识名
    LDAP ldapAuthType 用户 RFC2253 标识名
    LDAP ldapAuthType 群组 RFC2253 标识名
    OIDC 员工队伍 oidcAuthType IDP_GROUP Atlas OIDC IdP ID(在联合设置中找到),后跟“/”,然后是 IdP 组名称
    OIDC 工作负载 oidcAuthType 用户 Atlas OIDC IdP ID(在联合设置中找到),后跟“/”,然后是 IdP 用户名
    SCRAM-SHA awsIAMType、x509Type、ldapAuthType、oidcAuthType 字母数字字符串

    最大长度为 1024

  • x509Type 字符串

    MongoDB Cloud 用于对数据库用户进行身份验证的 X.509 方法。

    • 对于应用程序托管的 X.509,请指定 MANAGED
    • 对于自我托管的 X.509,请指定 CUSTOMER

    使用 CUSTOMER 方法创建的用户需要在用户名参数中使用公用名 (CN)。您必须对 $external 数据库创建经过外部身份验证的用户。

    值为 NONECUSTOMERMANAGED。默认值为 NONE

响应

  • 201 application/vnd.atlas.2023-01-01+json

    正常

    隐藏响应属性 显示响应属性 对象
    • awsIAMType 字符串

      可读的标签,指示新数据库用户是否使用与用户或用户角色关联的 Amazon Web Services (AWS) 身份和访问管理 (IAM) 凭证进行身份验证。

      值为 NONEUSERROLE。默认值为 NONE

    • 数据库名称 字符串 必需

      数据库用户进行身份验证所依据的数据库。 数据库用户必须提供用户名和身份验证数据库才能登录 MongoDB。 如果用户使用Amazon Web Services IAM、x.509、 LDAP或 OIDC 工作负载进行身份验证,此值应为 $external。 如果用户使用 SCRAM-SHA 或 OIDC Workforce 进行身份验证,则此值应为admin

      值为 admin$external。默认值为 admin

    • deleteAfterDate string(date-time)

      MongoDB Cloud 删除用户的日期和时间。此参数以 ISO 8601 时间戳格式(UTC 格式)表示其值,可以包括时区名称。您必须指定发出应用程序编程接口 (API) 请求后一周内的某个未来日期。

    • 描述 字符串

      此数据库用户的描述。

      最大长度为 100

    • labels 大量[对象]

      包含用于标记和分类 MongoDB 数据库用户的键值对的列表。您定义的标签不会显示在控制台中。

      应用于此MongoDB Cloud 组件的人类可读标签。

      隐藏标签属性 显示标签属性 对象
      • key 字符串

        用于标签和分类该组件的键。

        最小长度为 1,最大长度为 255

      • 字符串

        设立为用于标签和分类该组件的键的值。

        最小长度为 1,最大长度为 255

    • ldapAuthType 字符串

      轻型目录访问协议 (LDAP) 记录的一部分,数据库使用它来对 LDAP 主机上的此数据库用户进行身份验证。

      值为 NONEGROUPUSER。默认值为 NONE

    • oidcAuthType 字符串

      人类可读标签,指示新数据库用户或群组是否使用 OIDC 联合身份验证进行身份验证。如需创建联合身份验证用户,请指定该字段的 USER 的值。如需创建联合身份验证群组,请指定该字段的 IDP_GROUP 的值。

      值为 NONEIDP_GROUPUSER。默认值为 NONE

    • 角色 大量[对象]

      提供单个角色与单个适用数据库配对的列表。

      该数据库用户可用的资源范围。

      隐藏角色属性 显示角色属性 对象
      • collectionName 字符串

        此角色适用的集合。

      • 数据库名称 字符串 必需

        向该用户授予访问权限权限的数据库。

      • roleName 字符串 必需

        人类可读标签,用于标识分配给数据库用户的一群组权限。此值可以是内置角色或自定义角色。

        取值为 atlasAdminbackupclusterMonitordbAdmindbAdminAnyDatabaseenableShardingreadreadAnyDatabasereadWritereadWriteAnyDatabase<a custom role name>

    • scopes 大量[对象]

      包含此数据库用户可以访问的集群、MongoDB Atlas 数据湖和 MongoDB Atlas Streams 实例的列表。如果省略,MongoDB Cloud 会授予数据库用户访问项目中的所有集群、MongoDB Atlas 数据湖和 MongoDB Atlas Streams 实例的权限。

      该数据库用户可用的资源范围。

      隐藏范围属性 显示作用域属性 对象
      • 名称 字符串 必需

        人类可读标签,用于标识此数据库用户可以访问权限的集群或MongoDB AtlasAtlas 数据湖。

        格式应符合以下模式:^[a-zA-Z0-9][a-zA-Z0-9-]*$

      • 类型 字符串 必需

        此数据库用户可以访问权限的资源类别。

        值为 CLUSTERDATA_LAKESTREAM

    • 用户名 字符串 必需

      人类可读标签,表示向 MongoDB 进行身份验证的用户。此标签的格式取决于身份验证方法:

      身份验证方法 所需参数 参数值 用户名格式
      AWS IAM awsIAMType ROLE ARN
      AWS IAM awsIAMType 用户 ARN
      x.509 x509Type 客户 RFC2253 标识名
      x.509 x509Type 托管 RFC2253 标识名
      LDAP ldapAuthType 用户 RFC2253 标识名
      LDAP ldapAuthType 群组 RFC2253 标识名
      OIDC 员工队伍 oidcAuthType IDP_GROUP Atlas OIDC IdP ID(在联合设置中找到),后跟“/”,然后是 IdP 组名称
      OIDC 工作负载 oidcAuthType 用户 Atlas OIDC IdP ID(在联合设置中找到),后跟“/”,然后是 IdP 用户名
      SCRAM-SHA awsIAMType、x509Type、ldapAuthType、oidcAuthType 字母数字字符串

      最大长度为 1024

    • x509Type 字符串

      MongoDB Cloud 用于对数据库用户进行身份验证的 X.509 方法。

      • 对于应用程序托管的 X.509,请指定 MANAGED
      • 对于自我托管的 X.509,请指定 CUSTOMER

      使用 CUSTOMER 方法创建的用户需要在用户名参数中使用公用名 (CN)。您必须对 $external 数据库创建经过外部身份验证的用户。

      值为 NONECUSTOMERMANAGED。默认值为 NONE

  • 400 application/json

    错误请求。

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

  • 401 application/json

    未经授权。

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

  • 403 application/json

    Forbidden.

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

  • 404 application/json

    未找到。

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

  • 409 application/json

    冲突。

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

  • 500 application/json

    内部服务器错误。

    隐藏响应属性 显示响应属性 对象
    • badRequestDetail 对象

      错误请求详情。

      隐藏 BadRequestDetail 属性 显示 BadRequestDetail 属性 对象
      • 字段 大量[对象]

        描述客户端请求中的所有违规行为。

        隐藏字段属性 显示字段属性 对象
        • 描述 字符串 必需

          关于请求元素错误的原因的描述。

        • 字段 字符串 必需

          指向请求正文中字段的路径。

    • 详细信息 字符串

      描述导致每种错误类型的具体条件或原因。

    • 错误 integer(int32) 必需

      与此错误一起返回的 HTTP 状态代码。

      外部文档
    • 错误代码 字符串 必需

      返回此错误时附带应用程序错误代码。

    • 参数 大量[对象]

      用于提供更多错误信息的参数。

    • 原因 字符串

      随此错误返回的应用程序错误消息。

POST /api/atlas/v2 /groups/{groupId}/databaseUsers
atlas api databaseUsers createGroupDatabaseUser --help
import (
	"os"
	"context"
	"log"
	sdk "go.mongodb.org/atlas-sdk/v20230201001/admin"
)

func main() {
	ctx := context.Background()
	clientID := os.Getenv("MONGODB_ATLAS_CLIENT_ID")
	clientSecret := os.Getenv("MONGODB_ATLAS_CLIENT_SECRET")

	// See https://dochub.mongodb.org/core/atlas-go-sdk-oauth
	client, err := sdk.NewClient(sdk.UseOAuthAuth(clientID, clientSecret))

	if err != nil {
		log.Fatalf("Error: %v", err)
	}

	params = &sdk.CreateGroupDatabaseUserApiParams{}
	sdkResp, httpResp, err := client.DatabaseUsersApi.
		CreateGroupDatabaseUserWithParams(ctx, params).
		Execute()
}
curl --include --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "Accept: application/vnd.atlas.2023-02-01+json" \
  --header "Content-Type: application/json" \
  -X POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/databaseUsers" \
  -d '{ <Payload> }'
curl --user "${PUBLIC_KEY}:${PRIVATE_KEY}" \
  --digest --include \
  --header "Accept: application/vnd.atlas.2023-02-01+json" \
  --header "Content-Type: application/json" \
  -X POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/databaseUsers" \
  -d '{ <Payload> }'
AWS IAM 身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "username": "arn:aws:iam::358363220050:user/mongodb-aws-iam-auth-test-user",
  "awsIAMType": "USER",
  "databaseName": "$external"
}
LDAP 身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "username": "CN=marketing,OU=groups,DC=example,DC=com",
  "databaseName": "admin",
  "ldapAuthType": "GROUP"
}
OIDC Workforce 联合身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "username": "5dd7496c7a3e5a648454341c/sales",
  "databaseName": "admin",
  "oidcAuthType": "IDP_GROUP"
}
OIDC 工作负载联合身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "username": "5dd7496c7a3e5a648454341c/sales",
  "databaseName": "$external",
  "oidcAuthType": "USER"
}
SCRAM-SHA 身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "password": "changeme123",
  "username": "david",
  "databaseName": "admin"
}
X509 身份验证
{
  "roles": [
    {
      "roleName": "readWrite",
      "databaseName": "sales"
    },
    {
      "roleName": "read",
      "databaseName": "marketing"
    }
  ],
  "scopes": [
    {
      "name": "myCluster",
      "type": "CLUSTER"
    }
  ],
  "groupId": "32b6e34b3d91647abb20e7b8",
  "username": "CN=david@example.com,OU=users,DC=example,DC=com",
  "x509Type": "CUSTOMER",
  "databaseName": "$external"
}
响应示例 (201)
{
  "awsIAMType": "NONE",
  "databaseName": "admin",
  "deleteAfterDate": "2025-05-04T09:42:00Z",
  "description": "string",
  "labels": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "ldapAuthType": "NONE",
  "links": [
    {
      "href": "https://cloud.mongodb.com/api/atlas",
      "rel": "self"
    }
  ],
  "oidcAuthType": "NONE",
  "roles": [
    {
      "collectionName": "string",
      "databaseName": "string",
      "roleName": "atlasAdmin"
    }
  ],
  "scopes": [
    {
      "name": "string",
      "type": "CLUSTER"
    }
  ],
  "username": "string",
  "x509Type": "NONE"
}
响应示例 (400)
{
  "error": 400,
  "detail": "(This is just an example, the exception may not be related to this endpoint) No provider AWS exists.",
  "reason": "Bad Request",
  "errorCode": "VALIDATION_ERROR"
}
响应示例 (401)
{
  "error": 401,
  "detail": "(This is just an example, the exception may not be related to this endpoint)",
  "reason": "Unauthorized",
  "errorCode": "NOT_ORG_GROUP_CREATOR"
}
响应示例 (403)
{
  "error": 403,
  "detail": "(This is just an example, the exception may not be related to this endpoint)",
  "reason": "Forbidden",
  "errorCode": "CANNOT_CHANGE_GROUP_NAME"
}
响应示例 (404)
{
  "error": 404,
  "detail": "(This is just an example, the exception may not be related to this endpoint) Cannot find resource AWS",
  "reason": "Not Found",
  "errorCode": "RESOURCE_NOT_FOUND"
}
响应示例 (409)
{
  "error": 409,
  "detail": "(This is just an example, the exception may not be related to this endpoint) Cannot delete organization link while there is active migration in following project ids: 60c4fd418ebe251047c50554",
  "reason": "Conflict",
  "errorCode": "CANNOT_DELETE_ORG_ACTIVE_LIVE_MIGRATION_ATLAS_ORG_LINK"
}
响应示例 (500)
{
  "error": 500,
  "detail": "(This is just an example, the exception may not be related to this endpoint)",
  "reason": "Internal Server Error",
  "errorCode": "UNEXPECTED_ERROR"
}