# 创建命名空间

创建命名空间有两种方式：显式创建和自动创建。通过这两种方式，您可以根据不同的需求灵活选择创建命名空间的方式。显式创建适用于需要严格控制的环境，而自动创建则适用于动态环境，减少了手动干预。

## 显式创建命名空间

通过 Dashboard 或 REST API，您可以手动显式创建命名空间。显式创建的命名空间可以被直接管理、编辑和删除。

**使用场景**：适用于您希望明确控制哪些命名空间存在，并且需要对命名空间进行精细管理的情况。

### 通过 Dashboard 显示创建命名空间

以下为在 Dashboard 中快速创建命名空间的步骤：

1. 在 Dashboard 左侧菜单中点击**管理** ->**命名空间**。
2. 点击**创建**。在弹出的**创建命名空间**对话框中输入命名空间的名称。其余选项设置为默认值。有关如何配置最大会话数和速率限制，参考[通过 Dashboard 配置和管理命名空间](./configure-manage-namespace.md#通过-dashboard-配置和管理命名空间)。

3. 点击**创建**。您将看到新创建的命名空间出现在列表中。

### 通过 REST API 显示创建命名空间

在应用任何命名空间特定配置（如速率限制、会话限制）之前，必须先显式创建命名空间。

可以通过以下 API 创建命名空间：

```http
POST /mt/ns/<namespace>
```

将 `<namespace>` 替换为所需的命名空间 ID，请求体为空。

## 自动创建命名空间

在 EMQX 中，命名空间也可以在客户端连接时自动创建。

自动创建命名空间并非直接基于 `client_attrs.tns` 字段本身，而是依赖于**[命名空间来源](./namespace-global-settings.md#命名空间来源)**配置。当客户端连接到 EMQX 时，系统会根据已配置的命名空间来源规则，从客户端连接信息中生成 `tns`（租户命名空间）属性；如果对应的命名空间尚不存在，EMQX 将自动创建该命名空间。

**使用场景**：该方式适用于客户端连接来源可信、命名空间标识可从连接元数据中稳定提取，并且需要为大量租户或业务单元动态创建命名空间的场景。

::: tip 注意

自动创建的命名空间为只读命名空间，无法在 Dashboard 中进行编辑或修改其配置（如会话限制、速率限制）。这些命名空间由系统根据命名空间来源规则自动生成。

:::

::: tip 注意

只有当 `multi_tenancy.allow_only_managed_namespaces = false` 时，才允许根据命名空间来源规则自动创建命名空间。

当该配置为 `true` 时，仅允许使用显式创建的命名空间，自动创建将被禁止。

您也可以在 Dashboard 中通过**[仅允许显式创建的命名空间](./namespace-global-settings.md#仅允许显示创建的命名空间)**配置项启用或关闭该行为。

:::
