Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _docHome.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ TiDB 简介,核心特性与应用场景

<DocHomeCard href="/zh/tidb/stable/mysql-compatibility" label="与 MySQL 兼容性对比" icon="oss-mysql-blue">

TiDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能及语法
TiDB 高度兼容 MySQL 协议,以及 MySQL 8.x 常用的功能及语法

</DocHomeCard>

Expand Down
2 changes: 1 addition & 1 deletion character-set-and-collation.md
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ SELECT _utf8mb4'string' COLLATE utf8mb4_general_ci;

## 字符合法性检查

当指定的字符集为 utf8 或 utf8mb4 时,TiDB 仅支持合法的 utf8 字符。对于不合法的字符,会报错:`incorrect utf8 value`。该字符合法性检查与 MySQL 8.0 兼容,与 MySQL 5.7 及以下版本不兼容。
当指定的字符集为 utf8 或 utf8mb4 时,TiDB 仅支持合法的 utf8 字符。对于不合法的字符,会报错:`incorrect utf8 value`。该字符合法性检查与 MySQL 8.x 兼容,与 MySQL 5.7 及以下版本不兼容。

如果不希望报错,可以通过 `set @@tidb_skip_utf8_check=1;` 跳过字符检查。

Expand Down
6 changes: 3 additions & 3 deletions develop/dev-guide-mysql-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,21 @@ sudo yum install mysql
mysql --host <tidb_server_host> --port 4000 -u root -p --comments
```

macOS 上的 MySQL v9.0 客户端无法正确加载 `mysql_native_password` 插件,导致连接 TiDB 时报错 `ERROR 2059 (HY000): Authentication plugin 'mysql_native_password' cannot be loaded`。为解决该问题,建议安装并使用 MySQL v8.0 客户端来连接 TiDB 。安装命令如下:
macOS 上的 MySQL 9.x 客户端无法正确加载 `mysql_native_password` 插件,导致连接 TiDB 时报错 `ERROR 2059 (HY000): Authentication plugin 'mysql_native_password' cannot be loaded`。为解决该问题,建议安装并使用 MySQL 8.0 客户端来连接 TiDB 。安装命令如下:

```shell
brew install mysql-client@8.0
brew unlink mysql
brew link mysql-client@8.0
```

如果仍然遇到问题,可以尝试指定 MySQL v8.0 客户端的安装路径来使用 MySQL v8.0 客户端连接 TiDB。连接命令如下:
如果仍然遇到问题,可以尝试指定 MySQL 8.0 客户端的安装路径来使用 MySQL 8.0 客户端连接 TiDB。连接命令如下:

```shell
/opt/homebrew/opt/mysql-client@8.0/bin/mysql --comments --host ${YOUR_IP_ADDRESS} --port ${YOUR_PORT_NUMBER} -u ${your_user_name} -p
```

请使用实际部署的 MySQL v8.0 客户端的安装路径替代上述命令中的 `/opt/homebrew/opt/mysql-client@8.0/bin/mysql`。
请使用实际部署的 MySQL 8.0 客户端的安装路径替代上述命令中的 `/opt/homebrew/opt/mysql-client@8.0/bin/mysql`。

</div>

Expand Down
4 changes: 2 additions & 2 deletions dm/dm-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ aliases: ['/docs-cn/tidb-data-migration/dev/overview/','/docs-cn/tools/dm/overvi

## 产品特性

- **与 TiDB 同样保持 MySQL 兼容性。**高度兼容 MySQL 协议、MySQL 5.7 和 MySQL 8.0 的常用功能及语法。
- **与 TiDB 同样保持 MySQL 兼容性。**高度兼容 MySQL 协议、MySQL 5.7 和 MySQL 8.x 的常用功能及语法。
- **支持 DML & DDL 事件同步。**支持解析和同步 binlog 中的 DML 和 DDL 事件。
- **支持合库合表同步模式。**可以方便的将上游各个分片 MySQL 实例的各个分表数据,合并同步到下游 TiDB 的一张表。支持自定义编写同步规则以方便各种可能的同步需求,且具备自动识别和处理上游分片 MySQL 的 DDL 变更,大幅简化运维成本。
- **内置多种过滤器以灵活适应不同场景。**支持以预定义事件类型、正则表达式、SQL 表达式等多种方式在数据同步过程中对 MySQL binlog 事件进行过滤。
Expand All @@ -37,7 +37,7 @@ tiup install dm dmctl

+ 数据库版本要求

- MySQL 版本 5.6 ~ 8.0
- MySQL 版本 5.6 ~ 8.4
- MariaDB 版本 >= 10.1.2 (实验特性)

> **注意:**
Expand Down
3 changes: 1 addition & 2 deletions dm/dm-precheck.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ tiup dmctl check-task ./task.yaml

> **警告:**
>
> - 使用 DM 从 MySQL v8.0 迁移数据到 TiDB 目前为实验特性(从 DM v2.0 引入),不建议在生产环境下使用。
> - 使用 DM 从 MariaDB 迁移数据到 TiDB 目前为实验特性,不建议在生产环境下使用。
> 使用 DM 从 MariaDB 迁移数据到 TiDB 目前为实验特性,不建议在生产环境下使用。

- 上游 MySQL 表结构的兼容性

Expand Down
2 changes: 1 addition & 1 deletion faq/tidb-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ TiDB 使用起来很简单,可以将 TiDB 集群当成 MySQL 来用。你可

### 1.1.6 TiDB 和 MySQL 兼容性如何?

TiDB 支持绝大部分 MySQL 8.0 的语法,但目前还不支持触发器、存储过程、自定义函数等。详情参见[与 MySQL 兼容性对比](/mysql-compatibility.md)。
TiDB 支持绝大部分 MySQL 8.x 的语法,但目前还不支持触发器、存储过程、自定义函数等。详情参见[与 MySQL 兼容性对比](/mysql-compatibility.md)。

### 1.1.7 TiDB 支持分布式事务吗?

Expand Down
4 changes: 2 additions & 2 deletions functions-and-operators/bit-functions-and-operators.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,11 +300,11 @@ SELECT n,1024>>n,LPAD(CONV(1024>>n,10,2),11,0) FROM cte;

## MySQL 兼容性

在处理位函数和操作符时,MySQL 8.0 与之前版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.0 的行为。
在处理位函数和操作符时,MySQL 8.0 与之前版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.x 的行为。

## 已知问题

在以下情况中,TiDB 中的查询结果与 MySQL 5.7 相同,但与 MySQL 8.0 不同。
在以下情况中,TiDB 中的查询结果与 MySQL 5.7 相同,但与 MySQL 8.x 不同。

- 二进制参数的位操作。更多信息,请参考 [#30637](https://github.com/pingcap/tidb/issues/30637)。
- `BIT_COUNT()` 函数的结果。更多信息,请参考 [#44621](https://github.com/pingcap/tidb/issues/44621)。
12 changes: 6 additions & 6 deletions mysql-compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ aliases: ['/docs-cn/dev/mysql-compatibility/','/docs-cn/dev/reference/mysql-comp

# 与 MySQL 兼容性对比

TiDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能及语法。MySQL 生态中的系统工具(PHPMyAdmin、Navicat、MySQL Workbench、DBeaver 和[其他工具](/develop/dev-guide-third-party-support.md#gui))、客户端等均适用于 TiDB。
TiDB 高度兼容 MySQL 协议,以及 MySQL 8.x 常用的功能及语法。MySQL 生态中的系统工具(PHPMyAdmin、Navicat、MySQL Workbench、DBeaver 和[其他工具](/develop/dev-guide-third-party-support.md#gui))、客户端等均适用于 TiDB。

但 TiDB 尚未支持一些 MySQL 功能,可能的原因如下:

Expand Down Expand Up @@ -185,22 +185,22 @@ TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下

### 默认设置

TiDB 的默认设置与 MySQL 5.7 和 MySQL 8.0 有以下区别:
TiDB 的默认设置与 MySQL 5.7 和 MySQL 8.x 有以下区别:

- 字符集:
+ TiDB 默认:`utf8mb4`。
+ MySQL 5.7 默认:`latin1`。
+ MySQL 8.0 默认:`utf8mb4`。
+ MySQL 8.x 默认:`utf8mb4`。

- 排序规则:
+ TiDB 中 `utf8mb4` 字符集默认:`utf8mb4_bin`。
+ MySQL 5.7 中 `utf8mb4` 字符集默认:`utf8mb4_general_ci`。
+ MySQL 8.0 中 `utf8mb4` 字符集默认:`utf8mb4_0900_ai_ci`。
+ MySQL 8.x 中 `utf8mb4` 字符集默认:`utf8mb4_0900_ai_ci`。

- SQL mode:
+ TiDB 默认:`ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION`。
+ MySQL 5.7 默认与 TiDB 相同。
+ MySQL 8.0 默认 `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION`。
+ MySQL 8.x 默认 `ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION`。

- `lower_case_table_names`:
+ TiDB 默认:`2`,且仅支持设置该值为 `2`。
Expand All @@ -212,7 +212,7 @@ TiDB 的默认设置与 MySQL 5.7 和 MySQL 8.0 有以下区别:
- `explicit_defaults_for_timestamp`:
+ TiDB 默认:`ON`,且仅支持设置该值为 `ON`。
+ MySQL 5.7 默认:`OFF`。
+ MySQL 8.0 默认:`ON`。
+ MySQL 8.x 默认:`ON`。

### 日期时间处理的区别

Expand Down
2 changes: 1 addition & 1 deletion privilege-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ summary: TiDB 支持 MySQL 5.7 和 MySQL 8.0 的权限管理系统。权限相

# 权限管理

TiDB 支持 MySQL 5.7 的权限管理系统,包括 MySQL 的语法和权限类型。同时 TiDB 还支持 MySQL 8.0 的以下特性:
TiDB 支持 MySQL 5.7 的权限管理系统,包括 MySQL 的语法和权限类型。同时 TiDB 还支持 MySQL 8.x 的以下特性:

* 从 TiDB 3.0 开始,支持 SQL 角色。
* 从 TiDB 5.1 开始,支持动态权限。
Expand Down
16 changes: 8 additions & 8 deletions security-compatibility-with-mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ summary: TiDB 支持与 MySQL 5.7 类似的安全特性,同时也支持 MySQL

# 与 MySQL 安全特性差异

TiDB 支持与 MySQL 5.7 类似的安全特性,同时 TiDB 还支持 MySQL 8.0 的部分安全特性。TiDB 的安全特性在实现上与 MySQL 存在差异。
TiDB 支持与 MySQL 5.7 类似的安全特性,同时 TiDB 还支持 MySQL 8.x 的部分安全特性。TiDB 的安全特性在实现上与 MySQL 存在差异。

## 不支持的安全功能特性

Expand Down Expand Up @@ -36,36 +36,36 @@ TiDB 的密码过期策略功能与 MySQL 保持一致,但是在密码过期
针对密码复杂度策略功能,TiDB 与 MySQL 的比较如下:

- MySQL 5.7 以 validate_password 插件的形式实现了密码复杂度策略管理功能。
- MySQL 8.0 重新以 validate_password 组件的形式实现了密码复杂度策略管理功能。
- MySQL 8.x 重新以 validate_password 组件的形式实现了密码复杂度策略管理功能。
- TiDB 从 v6.5.0 起内置实现了密码复杂度策略管理功能。

因此,功能实现上存在以下差异:

- 密码复杂度策略功能如何启用:

+ MySQL 5.7 以 validate_password 插件的形式实现,需要进行插件的安装以启用密码复杂度策略管理。
+ MySQL 8.0 以 validate_password 组件的形式实现,需要进行组件的安装以启用密码复杂度策略管理。
+ MySQL 8.x 以 validate_password 组件的形式实现,需要进行组件的安装以启用密码复杂度策略管理。
+ TiDB 内置实现了密码复杂度策略管理,支持通过系统变量 [`validate_password.enable`](/system-variables.md#validate_passwordenable-从-v650-版本开始引入) 启用密码复杂度策略管理。

- 密码字典功能:

+ MySQL 5.7 通过变量 `validate_password_dictionary_file` 指定一个文件路径,在文件中写入密码中不允许包含的单词。
+ MySQL 8.0 通过变量 `validate_password.dictionary_file` 指定一个文件路径,在文件中写入密码中不允许包含的单词。
+ MySQL 8.x 通过变量 `validate_password.dictionary_file` 指定一个文件路径,在文件中写入密码中不允许包含的单词。
+ TiDB 通过变量 [`validate_password.dictionary`](/system-variables.md#validate_passworddictionary-从-v650-版本开始引入) 指定一个字符串,在该字符串中写入密码中不允许包含的单词。

### 密码连续错误限制登录策略

针对密码连续错误限制登录策略功能,TiDB 与 MySQL 的比较如下:

- MySQL 5.7 不支持密码连续错误限制登录策略管理功能。
- MySQL 8.0 支持密码连续错误限制登录策略管理功能。
- MySQL 8.x 支持密码连续错误限制登录策略管理功能。
- TiDB 从 v6.5.0 起支持密码连续错误限制登录策略管理功能。

因为用户的失败尝试次数和锁定状态需要做到全局一致,而 TiDB 是分布式数据库,不能像 MySQL 在服务端的内存中记录失败尝试次数和锁定状态,所以实现机制存在以下差异:

- 用户未被自动锁定,失败尝试次数的计数重置场景:

+ MySQL 8.0
+ MySQL 8.x

- 服务器重启时,所有用户失败尝试次数的计数都会被重置。
- 执行 `FLUSH PRIVILEGES` 时,所有用户失败尝试次数的计数都会被重置。
Expand All @@ -79,7 +79,7 @@ TiDB 的密码过期策略功能与 MySQL 保持一致,但是在密码过期

- 账户被自动锁定后的解锁场景:

+ MySQL 8.0
+ MySQL 8.x

- 服务器重启时,所有用户的自动锁定标识都会被重置。
- 执行 `FLUSH PRIVILEGES` 时,所有用户的自动锁定标识都会被重置。
Expand All @@ -96,7 +96,7 @@ TiDB 的密码过期策略功能与 MySQL 保持一致,但是在密码过期
针对密码重用策略功能,TiDB 与 MySQL 的比较如下:

- MySQL 5.7 不支持密码重用策略管理功能。
- MySQL 8.0 支持密码重用策略管理功能。
- MySQL 8.x 支持密码重用策略管理功能。
- TiDB 从 v6.5.0 起支持密码重用策略管理功能。

TiDB 的密码重用策略功能与 MySQL 一致,在实现密码重用策略时都增加了系统表 `mysql.password_history`,但 TiDB 与 MySQL 在删除 `mysql.user` 系统表中不存在的用户时存在以下差异:
Expand Down
2 changes: 1 addition & 1 deletion sql-statements/sql-statement-select.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ Query OK, 3 rows affected (0.00 sec)

- 不支持 `SELECT ... INTO @variable` 语法。
- 不支持 `SELECT ... INTO DUMPFILE` 语法。
- 不支持 MySQL 5.7 中支持的 `SELECT .. GROUP BY expr` 语法,而是匹配 MySQL 8.0 的行为,不按照默认的顺序进行排序。
- 不支持 MySQL 5.7 中支持的 `SELECT .. GROUP BY expr` 语法,而是匹配 MySQL 8.x 的行为,不按照默认的顺序进行排序。
- `SELECT ... TABLESAMPLE ...` 是 TiDB 的扩展语法,用于兼容其他数据库以及 [ISO/IEC 9075-2](https://standards.iso.org/iso-iec/9075/-2/ed-6/en/) 标准,但 MySQL 不支持该语法。

## 另请参阅
Expand Down
2 changes: 1 addition & 1 deletion tidb-lightning/tidb-lightning-checkpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ TiDB Lightning 支持两种存储方式:本地文件或 MySQL 数据库。

* 若 `driver = "file"`,断点会存放在一个本地文件,其路径由 `dsn` 参数指定。由于断点会频繁更新,建议将这个文件放到写入次数不受限制的盘上,例如 RAM disk。

* 若 `driver = "mysql"`,断点可以存放在任何兼容 MySQL 5.7 或以上的数据库中,包括 MariaDB 和 TiDB。在没有选择的情况下,默认会存在目标数据库里。
* 若 `driver = "mysql"`,断点可以存放在任何兼容 MySQL 的数据库中,包括 MariaDB 和 TiDB。在没有选择的情况下,默认会存在目标数据库里。

目标数据库在导入期间会有大量的操作,若使用目标数据库来存储断点会加重其负担,甚至有可能造成通信超时丢失数据。因此,**强烈建议另外部署一台兼容 MySQL 的临时数据库服务器**。此数据库也可以安装在 `tidb-lightning` 的主机上。导入完毕后可以删除。

Expand Down
2 changes: 1 addition & 1 deletion tidb-troubleshooting-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ TiDB 支持完整的分布式事务,自 v3.0 版本起,提供乐观事务与

- 6.1.7 DM 同步报错 `Error 1366: incorrect utf8 value eda0bdedb29d(\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd)`。

- 该值 MySQL 8.0 和 TiDB 都不能写入成功,但是 MySQL 5.7 可以写入成功。可以开启 TiDB 动态参数 `tidb_skip_utf8_check` 参数,跳过数据格式检查。
- 该值 MySQL 8.x 和 TiDB 都不能写入成功,但是 MySQL 5.7 可以写入成功。可以开启 TiDB 动态参数 `tidb_skip_utf8_check` 参数,跳过数据格式检查。

### 6.2 TiDB Lightning 问题

Expand Down
Loading