---
title: "创建用户 - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: 创建用户 本节主要介绍如何创建一个用户。 谁可以创建用户 数据库在运行过程中，往往需要创建不同的用户，并为用户赋予相应的权限，一般被授予 CREATE USER 权限的用户可以创建用户。 由于 CREATE USER 权限较大，默认仅集群管理员和租户管理员拥有此系统权限，其他用户如果需要创建用户，则需要被授予 CRE…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.1.0

# 创建用户

更新时间：2023-08-01 11:45:47

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.1.0/zh-CN/700.reference/200.administrator-guide/200.basic-database-management/400.manage-tenants/900.manage-users-and-permissions/300.mysql-mode/100.create-a-user-of-mysql-mode.md)  

本节主要介绍如何创建一个用户。

## 谁可以创建用户

数据库在运行过程中，往往需要创建不同的用户，并为用户赋予相应的权限，一般被授予 `CREATE USER` 权限的用户可以创建用户。

由于 `CREATE USER` 权限较大，默认仅集群管理员和租户管理员拥有此系统权限，其他用户如果需要创建用户，则需要被授予 `CREATE USER` 权限，授权相关操作请参见 [修改用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001701497)。

## 用户名称的规则

为用户指定名称时，需要注意以下限制：

- 用户名的唯一性：每个用户名需要保证在租户内唯一。

  用户名称在租户内是唯一的，不同租户下的用户可以同名，故通过 `用户名@租户名` 的形式可以在系统全局唯一定位一个租户用户。

  由于系统租户与 MySQL 租户属于同一兼容模式，为区别系统租户和普通租户下的用户，建议对系统租户下的用户名称使用特定前缀。
 - 用户名的命名约定：

     - 使用 OBClient 、ODC 等客户端创建用户时，要求用户名长度不超过 64 个字节。
     - 使用 OCP 创建用户时，要求用户名以英文字母开头，可包含大写字母、小写字母、数字和下划线，且长度为 2~64 个字符。

## 通过 SQL 语句创建一个拥有最小数据库权限的用户

您可以使用 `CREATE USER` 语句创建用户。创建用户必须拥有 `CREATE USER` 的系统权限。在创建用户时，建议坚持最小权限原则，即所有用户只拥有执行其任务所需的最小权限。

创建用户的 SQL 语句如下：

```sql
CREATE USER [IF NOT EXISTS] user_specification_list
    [REQUIRE {NONE | SSL | X509 | tls_option}];

user_specification_list:
    user_specification [, user_specification ...]

user_specification:
    user IDENTIFIED BY  'authstring'
  | user IDENTIFIED BY PASSWORD 'hashstring'

tls_option:
 | CIPHER 'cipher'
 | ISSUER 'issuer'
 | SUBJECT 'subject'

```

语句说明：

- `IF NOT EXISTS`：如果待创建的用户名已存在并且未指定 `IF NOT EXISTS`，则系统会报错。
 - `IDENTIFIED BY`：使用可选的 `IDENTIFIED BY` 子句，可以为账户指定一个密码。

  其中：

     - `user IDENTIFIED BY 'authstring'` 语句中的密码为明文，存入 `mysql.user` 表中后，服务器端会变为密文存储下来。
     - `user IDENTIFIED BY PASSWORD 'authstring'` 语句中的密码为密文。
 - `REQUIRE` 用于指定用户使用的加密协议，为 `NONE`、`SSL`、 `X509` 和 `tls_option` 中的一种。

创建一个拥有最小数据库权限的用户 `test2` 的示例如下。

1. 使用 `root` 用户登录集群的 MySQL 租户。
 2. 执行以下命令，创建用户 `test2`。

   ```sql
   obclient> CREATE USER 'test2' IDENTIFIED BY '******';

   ```
 3. 执行以下命令，授予用户 `test2` 访问数据库 `db1` 中所有表的权限。

   ```sql
   obclient> GRANT SELECT ON db1.* TO test2;

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
