Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
hfxsd committed Jul 30, 2024
2 parents 4160bd5 + 398d4b2 commit 12a1a12
Show file tree
Hide file tree
Showing 52 changed files with 1,147 additions and 711 deletions.
8 changes: 7 additions & 1 deletion TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,7 @@
- [表达式语法](/expression-syntax.md)
- [注释语法](/comment-syntax.md)
- SQL 语句
- [概览](/sql-statements/sql-statement-overview.md)
- [`ADMIN`](/sql-statements/sql-statement-admin.md)
- [`ADMIN CANCEL DDL`](/sql-statements/sql-statement-admin-cancel-ddl.md)
- [`ADMIN CHECKSUM TABLE`](/sql-statements/sql-statement-admin-checksum-table.md)
Expand Down Expand Up @@ -841,6 +842,7 @@
- [`SHOW BUILTINS`](/sql-statements/sql-statement-show-builtins.md)
- [`SHOW CHARACTER SET`](/sql-statements/sql-statement-show-character-set.md)
- [`SHOW COLLATION`](/sql-statements/sql-statement-show-collation.md)
- [`SHOW COLUMN_STATS_USAGE`](/sql-statements/sql-statement-show-column-stats-usage.md)
- [`SHOW COLUMNS FROM`](/sql-statements/sql-statement-show-columns-from.md)
- [`SHOW CONFIG`](/sql-statements/sql-statement-show-config.md)
- [`SHOW CREATE PLACEMENT POLICY`](/sql-statements/sql-statement-show-create-placement-policy.md)
Expand All @@ -867,10 +869,12 @@
- [`SHOW PROFILES`](/sql-statements/sql-statement-show-profiles.md)
- [`SHOW PUMP STATUS`](/sql-statements/sql-statement-show-pump-status.md)
- [`SHOW SCHEMAS`](/sql-statements/sql-statement-show-schemas.md)
- [`SHOW STATS_BUCKETS`](/sql-statements/sql-statement-show-stats-buckets.md)
- [`SHOW STATS_HEALTHY`](/sql-statements/sql-statement-show-stats-healthy.md)
- [`SHOW STATS_HISTOGRAMS`](/sql-statements/sql-statement-show-stats-histograms.md)
- [`SHOW STATS_LOCKED`](/sql-statements/sql-statement-show-stats-locked.md)
- [`SHOW STATS_META`](/sql-statements/sql-statement-show-stats-meta.md)
- [`SHOW STATS_TOPN`](/sql-statements/sql-statement-show-stats-topn.md)
- [`SHOW STATUS`](/sql-statements/sql-statement-show-status.md)
- [`SHOW TABLE NEXT_ROW_ID`](/sql-statements/sql-statement-show-table-next-rowid.md)
- [`SHOW TABLE REGIONS`](/sql-statements/sql-statement-show-table-regions.md)
Expand Down Expand Up @@ -948,7 +952,9 @@
- [GBK](/character-set-gbk.md)
- [Placement Rules in SQL](/placement-rules-in-sql.md)
- 系统表
- [`mysql`](/mysql-schema.md)
- `mysql` Schema
- [概述](/mysql-schema/mysql-schema.md)
- [`user`](/mysql-schema/mysql-schema-user.md)
- INFORMATION_SCHEMA
- [概述](/information-schema/information-schema.md)
- [`ANALYZE_STATUS`](/information-schema/information-schema-analyze-status.md)
Expand Down
2 changes: 1 addition & 1 deletion basic-sql-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ summary: TiDB 是一个兼容 MySQL 的数据库,可以执行 DDL、DML、DQL

成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且[大多数情况下](/mysql-compatibility.md)可以直接执行 MySQL 语句。

SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。完整的 SQL 语句列表,参见 [TiDB SQL 语法详解](https://pingcap.github.io/sqlgram/)
SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。完整的 TiDB SQL 语句列表,参见 [SQL 语句概览](/sql-statements/sql-statement-overview.md)

## 分类

Expand Down
9 changes: 9 additions & 0 deletions clinic/clinic-user-guide-for-tiup.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,15 @@ summary: 详细介绍在使用 TiUP 部署的 TiDB 集群或 DM 集群上如何
- `-N/--node`:支持只收集指定节点的数据,格式为 `ip:port`
- `--include`:只收集特定类型的数据,可选值为 `system``monitor``log``config``db_vars`。如需同时列出多种类型的数据,你可以使用逗号 `,` 来分割不同的数据类型。
- `--exclude`:不收集特定类型的数据,可选值为 `system``monitor``log``config``db_vars`。如需同时列出多种类型的数据,你可以使用逗号 `,` 来分割不同的数据类型。
- `--metricsfilter`:只收集指定的 Prometheus 监控指标。你可以使用以逗号分隔的指标前缀列表来指定要收集的指标。例如,`--metricsfilter=tidb,pd` 将收集以 `tidb` 开头的指标和以 `pd` 开头的指标。

> **Tip:**
>
> 要查看可用的指标前缀,可以运行以下命令查询 TiDB 监控 API:
>
> ```bash
> curl -s 'http://${prometheus-host}:${prometheus-port}/api/v1/label/__name__/values' | jq -r '.data[]' | cut -d\_ -f1 | uniq -c | sort -rn
> ```

运行 Diag 数据采集命令后,Diag 不会立即开始采集数据,而会在输出中提供预估数据量大小和数据存储路径,并询问你是否进行数据收集。例如:

Expand Down
4 changes: 3 additions & 1 deletion develop/dev-guide-create-table.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ CREATE TABLE `bookshop`.`ratings` (
);
```

额外的,如果需更新时也默认填入当前时间,可使用以下语句(但 `ON UPDATE` 后仅可填入[当前时间相关语句](https://pingcap.github.io/sqlgram/#NowSymOptionFraction)`DEFAULT` 后支持[更多选择](https://pingcap.github.io/sqlgram/#DefaultValueExpr)):
此外,如需在数据更新时也默认填入当前时间,可使用以下语句(但 `ON UPDATE` 后仅可填入与当前时间相关的表达式):

```sql
CREATE TABLE `bookshop`.`ratings` (
Expand All @@ -192,6 +192,8 @@ CREATE TABLE `bookshop`.`ratings` (
);
```

关于不同数据类型默认值的更多信息,请参阅[数据类型的默认值](/data-type-default-values.md)

### 防止重复

如果你需要防止列中出现重复值,那你可以使用 `UNIQUE` 约束。
Expand Down
4 changes: 2 additions & 2 deletions develop/dev-guide-tidb-crud-sql.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ aliases: ['/zh/tidb/dev/tidb-crud-sql']
成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且[大多数情况下](/mysql-compatibility.md)可以直接执行 MySQL 语句。

SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。完整的 SQL 语句列表,参见 [TiDB SQL 语法详解](https://pingcap.github.io/sqlgram/)
SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对话。本文档介绍基本的 SQL 操作。完整的 SQL 语句列表,参见 [SQL 语句概览](/sql-statements/sql-statement-overview.md)

## 分类

Expand All @@ -31,7 +31,7 @@ SQL 语言通常按照功能划分成以下的 4 个部分:
- **DQL (Data Query Language)**:数据查询语言,用来查询经过条件筛选的记录。
- **DCL (Data Control Language)**:数据控制语言,用来定义访问权限和安全级别。

此文档中,主要介绍 DML 和 DQL,即数据操作语言和数据查询语言。其余部分可查看 [SQL 基本操作](/basic-sql-operations.md)[TiDB SQL 语法详解](https://pingcap.github.io/sqlgram/)获得更多信息。
此文档中,主要介绍 DML 和 DQL,即数据操作语言和数据查询语言。其余部分可查看 [SQL 基本操作](/basic-sql-operations.md)[SQL 语句概览](/sql-statements/sql-statement-overview.md)获得更多信息。

## DML 数据操作语言

Expand Down
2 changes: 1 addition & 1 deletion expression-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ aliases: ['/docs-cn/dev/expression-syntax/','/docs-cn/dev/reference/sql/language
+ 函数调用,窗口函数等。可参考[函数和操作符概述](/functions-and-operators/functions-and-operators-overview.md)[窗口函数](/functions-and-operators/window-functions.md)
+ 其他,包括 paramMarker(即 `?`)、系统变量和用户变量、CASE 表达式等。

以下规则是表达式的语法,该语法基于 TiDB parser 的 [`parser.y`](https://github.com/pingcap/tidb/blob/master/pkg/parser/parser.y) 文件中所定义的规则。此外,下列语法图的可导航版本请参考 [TiDB SQL 语法图](https://pingcap.github.io/sqlgram/#Expression)
以下规则是表达式的语法,该语法基于 TiDB parser 的 [`parser.y`](https://github.com/pingcap/tidb/blob/master/pkg/parser/parser.y) 文件中所定义的规则。

```ebnf+diagram
Expression ::=
Expand Down
4 changes: 2 additions & 2 deletions extended-statistics.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ summary: 了解如何使用扩展统计信息指导优化器。

TiDB 可以收集以下两种类型的统计信息,本文主要介绍如何使用扩展统计信息来指导优化器。阅读本文前,建议先阅读[常规统计信息](/statistics.md)

- 常规统计信息:例如直方图和 Count-Min Sketch详情参见[常规统计信息](/statistics.md)
- 扩展统计信息:通过表和列过滤的统计信息
- 常规统计信息:主要关注单个列的统计信息,例如直方图和 Count-Min Sketch。这些统计信息对优化器估算查询成本至关重要。详情参见[常规统计信息](/statistics.md)
- 扩展统计信息:主要关注指定列之间的数据相关性,指导优化器在查询有相关性的列时更精确地估算查询成本

当手动或自动执行 `ANALYZE` 语句时,TiDB 默认只收集常规统计信息,不收集扩展统计信息。这是因为扩展统计信息仅在特定场景下用于优化器估算,而且收集扩展统计信息会增加额外开销。

Expand Down
2 changes: 1 addition & 1 deletion faq/manage-cluster-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ mysql -h 127.0.0.1 -uroot -P4000

### TiDB 有哪些系统表?

和 MySQL 类似,TiDB 中也有系统表,用于存放数据库运行时所需信息,具体信息参考 [TiDB 系统表](/mysql-schema.md)文档。
和 MySQL 类似,TiDB 中也有系统表,用于存放数据库运行时所需信息,具体信息参考 [TiDB 系统表](/mysql-schema/mysql-schema-user.md)文档。

### TiDB 各节点服务器下是否有日志文件,如何管理?

Expand Down
2 changes: 1 addition & 1 deletion mysql-compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ MySQL 系统变量 `optimizer_switch` 在 TiDB 中是只读的,对查询计划

### 内建函数

支持常用的 MySQL 内建函数,有部分函数并未支持。可通过执行 `SHOW BUILTINS` 语句查看可用的内建函数。参考 [SQL 语法文档](https://pingcap.github.io/sqlgram/#functioncallkeyword)
支持常用的 MySQL 内建函数,有部分函数并未支持。可通过执行 [`SHOW BUILTINS`](/sql-statements/sql-statement-show-builtins.md) 语句查看可用的内建函数

### DDL 的限制

Expand Down
87 changes: 87 additions & 0 deletions mysql-schema/mysql-schema-user.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: mysql.user
summary: 了解 `mysql` 系统表 `user`。
---

# `mysql.user`

`mysql.user` 表提供用户账户及其权限的信息。

使用以下 SQL 语句查看 `mysql.user` 表的结构:

```sql
DESC mysql.user;
```

输出结果如下:

```
+------------------------+----------------------+------+------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+----------------------+------+------+-------------------+-------+
| Host | char(255) | NO | PRI | NULL | |
| User | char(32) | NO | PRI | NULL | |
| authentication_string | text | YES | | NULL | |
| plugin | char(64) | YES | | NULL | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_role_priv | enum('N','Y') | NO | | N | |
| Drop_role_priv | enum('N','Y') | NO | | N | |
| Account_locked | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| FILE_priv | enum('N','Y') | NO | | N | |
| Config_priv | enum('N','Y') | NO | | N | |
| Create_Tablespace_Priv | enum('N','Y') | NO | | N | |
| Password_reuse_history | smallint(5) unsigned | YES | | NULL | |
| Password_reuse_time | smallint(5) unsigned | YES | | NULL | |
| User_attributes | json | YES | | NULL | |
| Token_issuer | varchar(255) | YES | | NULL | |
| Password_expired | enum('N','Y') | NO | | N | |
| Password_last_changed | timestamp | YES | | CURRENT_TIMESTAMP | |
| Password_lifetime | smallint(5) unsigned | YES | | NULL | |
+------------------------+----------------------+------+------+-------------------+-------+
44 rows in set (0.00 sec)
```

`mysql.user` 表包含多个字段,可分为三组:

* 账户相关字段:
* `Host`:指定 TiDB 用户账户的主机名。
* `User`:指定 TiDB 用户账户的用户名。
* 权限相关字段:

`_priv``_Priv` 结尾的字段定义授予用户账户的权限。例如,`Select_priv` 表示用户账户具有全局 `Select` 权限。更多信息,请参考 [TiDB 各操作需要的权限](/privilege-management.md#tidb-各操作需要的权限)

* 安全相关字段:
* `authentication_string``plugin``authentication_string` 存储用户账户的凭证。凭证根据 `plugin` 字段指定的认证插件进行验证。
* `Account_locked`:表示用户账户是否被锁定。
* `Password_reuse_history``Password_reuse_time`:用于[密码重用策略](/password-management.md#密码重用策略)
* `User_attributes`:提供用户账户注释和用户账户属性信息。
* `Token_issuer`:用于 [`tidb_auth_token`](/security-compatibility-with-mysql.md#tidb_auth_token) 认证插件。
* `Password_expired``Password_last_changed``Password_lifetime`:用于[密码过期策略](/password-management.md#密码过期策略)

虽然 TiDB `mysql.user` 表中的大多数字段也存在于 MySQL `mysql.user` 表中,但 `Token_issuer` 字段是 TiDB 特有的。
6 changes: 5 additions & 1 deletion mysql-schema.md → mysql-schema/mysql-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@ aliases: ['/docs-cn/dev/system-tables/system-table-overview/','/docs-cn/dev/refe

`mysql` 库里存储的是 TiDB 系统表。该设计类似于 MySQL 中的 `mysql` 库,其中 `mysql.user` 之类的表可以直接编辑。该库还包含许多 MySQL 的扩展表。

> **注意:**
>
> 在大多数情况下,不建议直接使用 `INSERT``UPDATE``DELETE` 更改系统表的内容。而是建议使用 [`CREATE USER`](/sql-statements/sql-statement-create-user.md)[`ALTER USER`](/sql-statements/sql-statement-alter-user.md)[`DROP USER`](/sql-statements/sql-statement-drop-user.md)[`GRANT`](/sql-statements/sql-statement-grant-privileges.md)[`REVOKE`](/sql-statements/sql-statement-revoke-privileges.md)[`SHOW CREATE USER`](/sql-statements/sql-statement-show-create-user.md) 等语句管理用户和权限。如果必须直接修改系统表,请使用 [`FLUSH PRIVILEGES`](/sql-statements/sql-statement-flush-privileges.md) 使更改生效。
## 权限系统表

这些系统表里面包含了用户账户以及相应的授权信息:

* `user` 用户账户,全局权限,以及其它一些非权限的列
* [`user`](/mysql-schema/mysql-schema-user.md) 用户账户,全局权限,以及其它一些非权限的列
* `db` 数据库级别的权限
* `tables_priv` 表级的权限
* `columns_priv` 列级的权限
Expand Down
2 changes: 1 addition & 1 deletion optimizer-fix-controls.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ SET SESSION tidb_opt_fix_control = '44262:ON,44389:ON';

- 默认值:`OFF`
- 可选值:`ON``OFF`
- 是否允许在缺少 [GlobalStats](/statistics.md#动态裁剪模式下的分区表统计信息) 的情况下使用[动态裁剪模式](/partitioned-table.md#动态裁剪模式)访问分区表。
- 是否允许在缺少 [GlobalStats](/statistics.md#收集动态裁剪模式下的分区表统计信息) 的情况下使用[动态裁剪模式](/partitioned-table.md#动态裁剪模式)访问分区表。

### [`44389`](https://github.com/pingcap/tidb/issues/44389) <span class="version-mark">从 v6.5.3 和 v7.2.0 版本开始引入</span>

Expand Down
Loading

0 comments on commit 12a1a12

Please sign in to comment.