Docs 菜单

Docs 主页Atlas Open Service Broker

管理数据库用户

在此页面上

  • 先决条件
  • 添加数据库用户
  • 删除数据库用户

重要

Atlas Open Service Broker 已弃用。 使用 MongoDB Atlas 操作符 相反。

您可以通过 Atlas Open Service Broker 创建和删除 Atlas数据库用户

在管理数据库用户之前,必须先部署副本集。

要创建数据库用户,首先需要定义 ServiceBinding 资源 在 Kubernetes 中。然后,Atlas Open Service Broker 在 Atlas 中创建相应的数据库用户。

1
  1. 复制以下资源定义示例。

    这是一个 YAML 文件,您可以对其进行修改,以满足您所需的配置。

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: ServiceBinding
    metadata:
    name: <USER_NAME>
    namespace: <NAMESPACE>
    spec:
    instanceRef:
    name: <CLUSTER_NAME>
  2. 打开首选文本编辑器,将资源定义粘贴到新的文件中。

2

创建数据库用户需要突出显示的设置:

说明
例子
metadata.name
Kubernetes 中服务绑定资源的名称。
atlas-user-1
metadata.namespace
Kubernetes 命名空间 创建服务绑定资源的位置。
atlas
spec.intanceRef.name
Kubernetes 中与 Atlas 集群相对应的ServiceInstance资源的名称。
my-atlas-cluster

创建数据库用户时,Atlas Open Service Broker 会为该用户随机生成 Atlas 用户名和密码。 服务目录会自动将用户的 Atlas 用户名、密码和连接 URI 存储在 Kubernetes 密钥中。

如果不指定其他设置,则创建的数据库用户具有以下默认属性:

  • SCRAM-SHAadmin数据库上进行身份验证

  • readWriteAnyDatabase admin数据库的权限

3

您可以在spec.parameters.user键下为用户配置其他设置。 这些设置对应于“ 创建数据库用户 公共 API”方法的 请求正文参数 。

重要

以下API参数将被上一步中所需的 Atlas Open Service Broker 设置覆盖,因此不应指定这些参数:

  • databaseName

  • groupId

  • password

  • username

例子

此示例资源定义创建:

  1. atlas命名空间中名为atlas-user-1的 Kubernetes 资源,以及

  2. 具有以下配置的 Atlas 数据库用户:

    • SCRAM-SHA 使用随机生成的用户名和密码在admin数据库上进行身份验证

    • readWritesample_airbnb数据库上的listingsAndReviews集合的权限

    • dbAdmin sample_geospatial数据库的权限

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: atlas-user-1
namespace: atlas
spec:
instanceRef:
name: my-atlas-cluster
parameters:
user:
roles:
- databaseName: sample_airbnb
collectionName: listingsAndReviews
roleName: readWrite
- databaseName: sample_geospatial
roleName: dbAdmin
4
5

调用以下 Kubernetes 命令来创建数据库用户:

kubectl apply -f atlas-user-1.yaml
6

要查看 Kubernetes 集群中新用户的状态,请将metadata.namereplica-set.yaml传递到以下命令:

svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>

用户的状态显示在Bindings下。

例子

Bindings:
NAME STATUS
+---------------+--------+
atlas-user-1 Ready

要查看用户的详细视图,请将metadata.nameatlas-user-1.yaml传递到以下命令中:

svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>

该命令会返回用户的详细信息。

例子

Name: atlas-user-1
Namespace: atlas
Status: Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC
Secret: atlas-user-1
Instance: my-replica-set
Parameters:
user:
roles:
- collectionName: listingsAndReviews
databaseName: sample_airbnb
roleName: readWrite
- databaseName: sample_geospatial
roleName: dbAdmin
Secret Data:
password 44 bytes
uri 58 bytes
username 36 bytes
7

用户的连接详细信息存储在与ServiceBinding资源具有相同名称和命名空间的密钥中。 该密钥由 Kubernetes 进行 base64 编码,包含用户的 Atlas 用户名、密码和 URI。

  1. atlas-user-1.yaml中的metadata.namemetadata.namespace传递到以下命令中,以检索用户的 Kubernetes 密钥:

    kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml

    该命令返回用户的 base64 编码的 Atlas 密码、URI 和用户名:

    例子

    apiVersion: v1
    data:
    password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0=
    uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA==
    username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3
    kind: Secret
    metadata:
    creationTimestamp: "2019-08-26T01:46:30Z"
    name: atlas-user-1
    namespace: atlas
    ownerReferences:
    - apiVersion: servicecatalog.k8s.io/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: ServiceBinding
    name: atlas-user-1
    uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457
    resourceVersion: "79692"
    selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1
    uid: 14829566-4859-4b47-97f6-d0a2f7425906
    type: Opaque
  2. 将密钥中的data.username传递给以下命令,以解码用户的 Atlas 用户名:

    echo '<DATA.USERNAME>' | base64 --decode

    此命令会返回解码后的 Atlas 用户名:

    例子

    52c35e67-c7a3-11e9-8d20-0374ac110007

    使用data.passworddata.uri重复该命令,以解码用户的 Atlas 密码和 URI。

    echo '<DATA.PASSWORD>' | base64 --decode
    echo '<DATA.URI>' | base64 --decode

提示

连接到 Atlas 集群

要连接到您的部署,请将解码后的 Atlas URI 和用户名传递到以下命令中:

mongo <DECODED_URI> --username <DECODED_USERNAME>

当系统提示您输入密码时,输入已解码的用户 Atlas 密码。

要删除数据库用户,请将metadata.nameServiceBinding资源传递给以下命令之一:

kubectl delete servicebindings <METADATA.NAME> \
-n <METADATA.NAMESPACE>

要确认用户已被删除,请将集群资源中的metadata.name传递到以下命令中:

svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>

该命令在 下返回No bindings defined Bindings

分享反馈
© 2023 MongoDB, Inc.

关于MongoDB

  • 招贤纳士
  • 投资者关系
  • 法律声明
  • 隐私条款
  • 安全信息
  • 信任中心
© 2023 MongoDB, Inc.