diff --git a/dir.yaml b/dir.yaml
index 224bd47..ead6c5b 100644
--- a/dir.yaml
+++ b/dir.yaml
@@ -358,6 +358,22 @@
- title_en: TLS
title_cn: TLS
path: user-security/tls
+ - title_en: Access Control
+ title_cn: 访问控制
+ collapsed: true
+ children:
+ - title_en: Overview
+ title_cn: 概述
+ path: user-security/access-control/overview
+ - title_en: User Management
+ title_cn: 用户管理
+ path: user-security/access-control/user
+ - title_en: Privileges
+ title_cn: 权限管理
+ path: user-security/access-control/privilege
+ - title_en: Role Management
+ title_cn: 角色管理
+ path: user-security/access-control/role
- title_en: Release Notes
title_cn: 版本发布说明
collapsed: true
diff --git a/en_US/user-security/access-control/overview.md b/en_US/user-security/access-control/overview.md
new file mode 100644
index 0000000..e69de29
diff --git a/en_US/user-security/access-control/privilege.md b/en_US/user-security/access-control/privilege.md
new file mode 100644
index 0000000..e69de29
diff --git a/en_US/user-security/access-control/role.md b/en_US/user-security/access-control/role.md
new file mode 100644
index 0000000..e69de29
diff --git a/en_US/user-security/access-control/user.md b/en_US/user-security/access-control/user.md
new file mode 100644
index 0000000..e69de29
diff --git a/zh_CN/user-security/access-control/overview.md b/zh_CN/user-security/access-control/overview.md
new file mode 100644
index 0000000..52bcb95
--- /dev/null
+++ b/zh_CN/user-security/access-control/overview.md
@@ -0,0 +1,40 @@
+# 访问控制概述
+
+访问控制系统是数据库安全的核心,它决定了哪些用户可以连接到数据库以及他们被允许执行哪些操作。Datalayers 的访问控制系统主要围绕用户、权限、角色三个核心概念构建。
+
+## 用户
+
+用户是指连接到 Datalayers 数据库服务器的客户端。每个用户都由一个用户账户标识,用户账户由用户名和主机名构成,例如 `'user'@'127.0.0.1'` 表示用户名为 `user` 的用户从本机连接到服务器。通过这种用户名和主机名结合的方式,可以为从不同主机登录的用户设置不同的权限。
+
+更多有关用户账户的信息请参照:[用户管理](./user.md)。
+
+## 权限
+
+权限定义了用户可以在数据库中执行的具体操作。Datalayers 提供了三种类型的权限:
+
+- 全局权限:适用于服务器中所有对象的权限,以及与系统管理相关的权限,例如:在任意数据库中建表的权限,向集群中添加节点的权限等。
+
+- 数据库权限:适用于指定的数据库及其包含的所有对象的权限。例如:在数据库中建表、删表的权限,访问数据库中某张表的权限等。
+
+- 对象权限:适用于数据库中的特定对象的权限,当前 Datalayers 仅支持表级权限,例如:访问某张表的权限。
+
+通过授予和撤销这些权限,数据库管理员可以精确控制用户对数据的访问和操作能力。
+
+更多有关权限的信息请参照:[权限管理](./privilege.md)。
+
+## 角色
+
+角色是权限的集合,也可以将其视为一个没有直接登录能力的特殊用户。角色可以被授予一组预定义的权限,然后将该角色授予一个或多个用户。用户被授予角色后,可以直接使用角色被授予的权限。
+
+角色的主要作用在于将权限分组,从而简化权限管理,尤其是在用户众多、权限需求复杂的环境中。通过创建不同的角色来代表不同的职责或访问级别(例如,一个 `read_only` 角色只拥有查询权限,一个 `app_user` 角色拥有数据读写权限),数据库管理员可以避免为每个用户单独授予和撤销大量权限,只需将相应的角色授予用户即可。
+
+
+更多有关角色的信息请参照:[角色管理](./role.md)。
+
+## 访问控制流程
+
+当一个用户尝试连接到 Datalayers 服务器并执行某个操作时,访问控制系统会进行以下检查:
+
+1. 身份验证:检查客户端传递的用户名与主机名是否存在于系统中,以及对应的密码是否正确。若是则连接成功,否则拒绝该连接。
+
+2. 请求验证:连接成功后,对于客户端发起的后续请求,系统会检查是否符合相应的权限要求,例如是否具有建表的权限。此过程是自上而下的,即按照全局权限、数据库权限、对象权限的顺序检查,只要在任何一个级别中具备相关权限,请求将被接受。
diff --git a/zh_CN/user-security/access-control/privilege.md b/zh_CN/user-security/access-control/privilege.md
new file mode 100644
index 0000000..423e5ff
--- /dev/null
+++ b/zh_CN/user-security/access-control/privilege.md
@@ -0,0 +1,159 @@
+# 权限管理
+
+权限是指角色或用户访问数据库对象的能力。
+
+## 权限类型
+
+Datalayers 中支持的权限包括:
+
+| 权限名称 | 权限类型 | 描述 |
+| ------------------ | ---------------- | ------------------------------------ |
+| ALL \[PRIVILEGES\] | 全局 | 授予所有权限,通常用于管理员账户 |
+| CREATE ROLE | 全局 | 允许创建新的角色 |
+| CREATE USER | 全局 | 允许创建新用户 |
+| DROP ROLE | 全局 | 允许删除角色 |
+| RELOAD | 全局 | 允许重新加载系统表或配置文件 |
+| SHOW DATABASES | 全局 | 允许查看数据库列表 |
+| SUPER | 全局 | 允许执行高权限操作 |
+| USAGE | 全局 | 表示没有权限,通常表示默认权限 |
+| ALTER | 全局、表 | 允许修改表结构,如添加、删除列等 |
+| DELETE | 全局、表 | 允许删除表中的数据 |
+| INDEX | 全局、表 | 允许创建和删除索引 |
+| INSERT | 全局、表 | 允许向表中插入数据 |
+| SELECT | 全局、表 | 允许查询表中的数据 |
+| UPDATE | 全局、表 | 允许更新表中的数据 |
+| CREATE | 全局、数据库、表 | 允许创建数据库、表或索引等数据库对象 |
+| DROP | 全局、数据库、表 | 允许删除数据库、表或视图 |
+| GRANT | 全局、数据库、表 | 允许将权限授予其他用户 |
+
+## 授予权限
+
+可以通过如下命令授予用户或角色权限:
+
+```sql
+GRANT priv_type [, priv_type] ...
+ ON priv_level
+ TO user_or_role [, user_or_role] ...
+ [WITH GRANT OPTION]
+```
+
+- `priv_type`:权限类型,如 SELECT, INSERT, UPDATE 等。
+
+- `priv_level`:权限级别,表明权限的作用范围
+ - `*.*`:全局权限,针对数据库中所有数据对象
+ - `db_name.*`:数据库级权限,针对某数据库下所有对象
+ - `db_name.tbl_name`:表级权限,针对某数据库中的某表
+
+- `user_or_role`:用户账户或角色名,其中的主机名部分支持通配符`%`,例如`'alice'@'%'`可以匹配从任意主机登录的`alice`
+
+- `WITH GRANT OPTION`:可选选项,表示是否顺带授予 GRANT 权限,以使得被授权者可将权限再授予他人
+
+示例:
+
+授予用户 `'username'` 在 `test_db` 数据库中的查询权限,且只能从 `192.168.1.%` 网段的主机上查询:
+
+```sql
+GRANT SELECT ON test_db.* TO 'username'@'192.168.1.%';
+```
+
+授予 `admin` 角色对数据库 `sales_db` 中 `orders` 表的插入和更新权限,并允许 `admin` 将这些权限再授予其他用户:
+
+```sql
+GRANT INSERT, UPDATE ON sales_db.orders TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
+```
+
+授予 `developer` 用户对所有数据库、表的所有权限:
+
+```sql
+GRANT ALL PRIVILEGES ON *.* TO 'developer'@'127.0.0.1';
+```
+
+## 收回权限
+
+可以通过如下命令收回用户或角色的权限:
+
+```sql
+REVOKE [IF EXISTS]
+ priv_type [, priv_type] ...
+ ON priv_level
+ FROM user_or_role [, user_or_role] ...
+```
+
+- `user_or_role`:用户账户或角色名,其中的主机名部分不支持通配符,必须使用完整名称
+
+示例:
+
+从 `developer` 用户收回对数据库 `sales_db` 中 `orders` 表的插入和更新权限:
+
+```sql
+REVOKE INSERT, UPDATE ON sales_db.orders FROM 'developer'@'127.0.0.1';
+```
+
+从 `admin` 用户收回对 `production_db` 数据库的所有权限:
+
+```sql
+REVOKE ALL PRIVILEGES ON production_db.* FROM 'admin'@'127.0.0.1';
+```
+
+## 查看权限
+
+通过如下命令查看用户或角色的权限:
+
+```sql
+SHOW GRANTS
+ [FOR user_or_role
+ [USING role [, role] ...]]
+```
+
+- `user_or_role`:指定查看某个用户或角色的权限,若省略,则查看当前用户
+- `USING role [, role] ...`: 指定查看该用户或角色在启用特定角色时,所获得的权限
+
+通过如下命令查看系统中所有支持的权限:
+
+```sql
+SHOW PRIVILEGES;
+```
+
+## 权限变更生效时机
+
+服务器启动时如果添加了 `--skip-grant-tables` 选项,则启动后不进行访问控制,任何用户都可以执行任意操作。如果没有使用 `--skip-grant-tables` 选项,服务器会在启动后会缓存权限信息到内存,并开启访问控制。
+
+正常情况下,通过权限管理语句(如 `GRANT`、`REVOKE`、`CREATE USER` 等)修改权限信息时,变更会立即在集群中生效。但如果网络或其他设施出现异常,变更可能只在部分节点上生效。不过,系统会周期性地更新节点的缓存,保证变更最终会生效,通常这个时间不超过15分钟。
+
+此外,用户还可以通过 `FLUSH PRIVILEGES` 命令触发缓存更新,如果该命令执行成功,之前的变更将立刻生效。
+
+
+## 各操作需要的权限
+
+| 操作 | 需要的权限 |
+|-----------------------|------------|
+| ALTER TABLE | ALTER TABLE ... DROP 需要表的 ALTER, DROP 权限;
ALTER TABLE ... RENAME 需要旧表的 ALTER 和 DROP 权限,以及新表的 ALTER,CREATE 和 INSERT 权限;
其余 ALTER TABLE 操作需要表的 ALTER,CREATE 和 INSERT 权限;|
+| ANALYZE TABLE | 表的 INSERT 和 SELECT 权限 |
+| ALTER USER | CREATE USER 权限 |
+| COMPACT TABLE | 表的 INSERT 权限|
+| CREATE DATABASE | 全局 CREATE 权限 |
+| CREATE INDEX | 表的 INDEX 权限 |
+| CREATE TABLE | 数据库的 CREATE 权限|
+| CREATE ROLE | CREATE ROLE 权限 |
+| CREATE USER | CREATE USER 权限 |
+| DESC TABLE | 表的 SELECT 权限 |
+| DROP DATABASE | 数据库的 DROP 权限 |
+| DROP INDEX | 表的 INDEX 权限 |
+| DROP TABLE | 表的 DROP 权限 |
+| DROP ROLE | DROP ROLE 权限 |
+| DROP USER | CREATE USER 权限 |
+| EXCLUDE NODE | SUPER 权限 |
+| EXPLAIN | 需要与 EXPLAIN 要分析的语句相同的权限 |
+| FLUSH | RELOAD 权限 |
+| GRANT | 如果是授予权限,需要 GRANT 权限以及 GRANT 所赋予的权限;
如果是授予角色,需要满足以下条件之一:(1)具有SUPER 权限(2)已经被授予过该角色,且 `WITH_GRANT_OPTION = true`|
+| INCLUDE NODE | SUPER 权限 |
+| REBALANCE | SUPER 权限 |
+| REVOKE | 如果是收回权限,需要 GRANT 权限以及 REVOKE 所撤销的权限;
如果是收回角色,需要 `SUPER` 权限|
+| SET DEFAULT ROLE | CREATE USER 权限或者 `information_schema.default_roles` 表的 UPDATE 权限(为当前用户启用角色则无需权限) |
+| SHOW CREATE TABLE | 表的任意一种权限 |
+| SHOW DATABASES | 能查看至少有一种权限的数据库,若具有 SHOW DATABASES 权限,则能查看所有数据库 |
+| SHOW GRANTS | `information_schema` 数据库的 SELECT 权限(查看当前用户则无需权限) |
+| SHOW TABLES | 能查看至少有一种权限的表 |
+| TRIM DATABASE | 数据库的 DROP 权限|
+| TRUNCATE TABLE | 表的 DROP 权限 |
+| USE | 数据库或其中数据对象的任意一种权限 |
diff --git a/zh_CN/user-security/access-control/role.md b/zh_CN/user-security/access-control/role.md
new file mode 100644
index 0000000..48f6b2a
--- /dev/null
+++ b/zh_CN/user-security/access-control/role.md
@@ -0,0 +1,76 @@
+# 角色
+
+角色是一系列权限的集合,也可以视为不可登录的特殊用户。
+
+## 创建角色
+
+可以通过如下命令创建角色:
+
+```sql
+CREATE ROLE [IF NOT EXISTS] role [, role ] ...
+```
+
+- `role`:角色名,如`admin`,`developer`。此外,主机名也可以作为角色名的一部分,如`'admin'@'127.0.0.1'`,但主机名不具有实际含义,仅作为字面量存储,不可用于登录,缺省值为`%`。
+
+## 授予角色权限
+
+授予角色权限的操作与授予用户权限相同。
+
+示例:
+
+授予角色 `manager` 对数据库 `sales_db` 中所有表的查询权限:
+
+```sql
+GRANT SELECT ON sales_db.* TO 'manager'@'%';
+```
+
+授予角色 `admin` 对 `inventory_db` 中 `products` 表的插入和更新权限,并允许该角色将权限授予其他用户:
+
+```sql
+GRANT INSERT, UPDATE ON inventory_db.products TO 'admin' WITH GRANT OPTION;
+```
+
+## 收回角色权限
+
+收回角色权限的操作与收回用户权限相同。
+
+示例:
+
+从角色 `readonly` 收回对数据库 `hr_db` 中所有表的查询权限:
+
+```sql
+REVOKE SELECT ON hr_db.* FROM 'readonly';
+```
+
+从角色 `editor` 收回对数据库 `content_db` 中 `articles` 表的所有权限:
+
+```sql
+REVOKE ALL ON content_db.articles FROM 'editor';
+```
+
+## 将角色授予给用户
+
+角色可以作为一个权限的集合体授予给用户或其他角色,被授予者将继承授予者的权限。
+
+角色的授予可以通过如下命令实现:
+
+```sql
+GRANT user_or_role [, user_or_role] ...
+ TO user_or_role [, user_or_role] ...
+ [WITH ADMIN OPTION]
+```
+
+授予者与被授予者之间不得形成权限继承环,因此在执行该命令前,系统会检查是否会导致循环依赖关系,若存在则拒绝执行。
+
+角色授予给用户后将立即生效,用户可以直接使用角色的权限。
+
+## 将角色从用户处收回
+
+通过如下命令解除角色或用户间的权限继承关系:
+
+```sql
+REVOKE user_or_role [, user_or_role] ...
+ FROM user_or_role [, user_or_role] ...
+```
+
+收回后,用户将无法再使用该角色的权限。
diff --git a/zh_CN/user-security/access-control/user.md b/zh_CN/user-security/access-control/user.md
new file mode 100644
index 0000000..042b5a1
--- /dev/null
+++ b/zh_CN/user-security/access-control/user.md
@@ -0,0 +1,48 @@
+# 用户管理
+
+## 创建用户
+
+用户账户由主机名和用户名构成,可以通过如下命令创建账户并设置密码:
+
+```sql
+CREATE USER [IF NOT EXISTS] user [IDENTIFIED BY 'password'];
+```
+
+- `user`:格式为`'user_name'@'host_name'`,例如 `'alice'@'127.0.0.1'`
+- `password`:账户密码,最长为32位字符
+
+用户账户创建以后,可以在客户端启动时传递如下参数登录账户:
+
+```shell
+dlsql --username xxx --password xxx
+```
+
+或者简写为:
+
+```shell
+dlsql -u xxx -p xxx
+```
+
+## 修改密码
+
+用户创建成功后,可以通过如下命令修改账户密码:
+
+```sql
+ALTER USER [IF EXISTS] user IDENTIFIED BY 'password';
+```
+
+## 删除用户
+
+用户创建成功后,可以通过如下命令删除用户:
+
+```sql
+DROP USER [IF EXISTS] user;
+```
+
+## 查看当前用户
+
+可以通过如下指令查看当前会话中登录用户:
+
+```sql
+SELECT USER();
+```