Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Security  /  Using Encrypted Connections

8.3 使用加密连接

在 MySQL 客户端和服务器之间的未加密连接中,网络上的任何人都可以观看所有流量并检查客户端和服务器之间发送或接收的数据。

当您需要以安全的方式在网络上传输信息时,未加密的连接是不可接受的。要使任何类型的数据变得不可读,使用加密。加密算法必须包括安全元素,以抵御各种已知的攻击,例如更改加密消息的顺序或重放数据两次。

MySQL 支持使用 TLS(传输层安全)协议在客户端和服务器之间建立加密连接。TLS 有时也称为 SSL(安全套接层),但 MySQL 并不实际使用 SSL 协议,因为其加密是弱的(见 第 8.3.2 节,“加密连接 TLS 协议和密码”)。

TLS 使用加密算法来确保通过公共网络传输的数据是可靠的。它具有检测数据更改、丢失或重放的机制。TLS 还集成了使用 X.509 标准的身份验证算法。

X.509 使得互联网上的身份验证成为可能。在基本术语中,应该有一个实体称为 证书颁发机构(或 CA),该机构为需要的人分配电子证书。证书依赖于非对称加密算法,该算法具有两个加密密钥(公钥和私钥)。证书所有者可以将证书呈现给其他方,以证明身份。证书包含所有者的公钥。使用该公钥加密的任何数据只能使用相应的私钥解密,该私钥由证书所有者持有。

MySQL 中的加密连接支持使用 OpenSSL。有关 OpenSSL 支持的加密协议和密码的信息,请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”

默认情况下,MySQL 实例在运行时链接到可用的安装的 OpenSSL 库,以支持加密连接和其他加密相关操作。您可以从源代码编译 MySQL,并使用 WITH_SSL CMake 选项指定特定的安装的 OpenSSL 版本或替代 OpenSSL 系统包。在那种情况下,MySQL 选择该版本。有关执行此操作的说明,请参阅 第 2.8.6 节,“配置 SSL 库支持”

您可以使用 Tls_library_version 系统状态变量来检查运行时使用的 OpenSSL 库版本。

如果您编译了 MySQL 使用一个版本的 OpenSSL,并想更改为不同的版本而不需要重新编译,可以通过编辑动态库加载器路径(Unix 系统上的 LD_LIBRARY_PATH 或 Windows 系统上的 PATH)来实现。删除编译版本的 OpenSSL 路径,并添加替换版本的路径,将其放在路径上的其他 OpenSSL 库之前。在启动时,当 MySQL 无法找到使用 WITH_SSL 指定的 OpenSSL 版本时,它将使用路径上的第一个版本。

默认情况下,MySQL 程序尝试使用加密连接,如果服务器支持加密连接,否则回退到未加密连接。有关影响加密连接使用的选项的信息,请参阅 第 8.3.1 节,“配置 MySQL 使用加密连接”命令选项用于加密连接

MySQL 按连接基础执行加密,并且可以根据个体应用程序的需求选择加密或不加密的连接。这使您可以根据个体应用程序的需求选择加密或不加密的连接。有关如何要求用户使用加密连接的信息,请参阅 REQUIRE 子句的讨论,在 CREATE USER 语句中,在 第 15.7.1.3 节,“CREATE USER 语句” 中。另见 require_secure_transport 系统变量的描述,在 第 7.1.8 节,“服务器系统变量” 中。

加密连接也可以在源服务器和副本服务器之间使用。请参阅 第 19.3.1 节,“设置复制以使用加密连接”

有关从 MySQL C API 使用加密连接的信息,请参阅 支持加密连接

也可以从 SSH 连接到 MySQL 服务器主机中使用加密连接。例如,请参阅 第 8.3.4 节,“从 Windows 远程连接到 MySQL 服务器使用 SSH”