## A.9 MySQL 8.0 常见问题解答：安全性

[](<>)A.9.1。[在哪里可以找到解决 MySQL 安全问题的文档？](faqs-security.html#faq-mysql-where-docs-security)A.9.2. [MySQL 8.0 中默认的身份验证插件是什么？](faqs-security.html#faq-mysql-default-authentication-plugin)A.9.3. [MySQL 8.0 是否有对 SSL 的原生支持？](faqs-security.html#faq-mysql-have-native-ssl)A.9.4。[SSL 支持是否内置在 MySQL 二进制文件中，还是我必须自己重新编译二进制文件才能启用它？](faqs-security.html#faq-mysql-is-ssl-available)A.9.5。[MySQL 8.0 是否具有针对 LDAP 目录的内置身份验证？](faqs-security.html#faq-mysql-have-builtin-ldap)A.9.6。[MySQL 8.0 是否包括对基于角色的访问控制 (RBAC) 的支持？](faqs-security.html#faq-mysql-have-builtin-rbac)A.9.7. [MySQL 8.0 是否支持 TLS 1.0 和 1.1？](faqs-security.html#faq-mysql-tls-versions)

| [](<>)[](<>)<br/><br/>**A.9.1。** | 在哪里可以找到解决 MySQL 安全问题的文档？ |
| :------------------------------- | :----------------------- |
|  | 最好的起点是[第 6 章，*安全*](security.html).<br/><br/>MySQL 文档的其他部分可能对特定的安全问题有用，包括：<br/><br/>* [第 6.1.1 节，“安全指南”](security-guidelines.html).<br/><br/>* [第 6.1.3 节，“使 MySQL 免受攻击者的攻击”](security-against-attack.html).<br/><br/>* [第 B.3.3.2 节，“如何重置 Root 密码”](resetting-permissions.html).<br/><br/>* [第 6.1.5 节，“如何以普通用户身份运行 MySQL”](changing-mysql-user.html).<br/><br/>* [第 6.1.4 节，“安全相关的 mysqld 选项和变量”](security-options.html).<br/><br/>* [第 6.1.6 节，“本地加载数据的安全注意事项”](load-data-local-security.html).<br/><br/>* [第 2.10 节，“安装后设置和测试”](postinstallation.html).<br/><br/>* [第 6.3 节，“使用加密连接”](encrypted-connections.html).<br/><br/>\*[可加载函数安全注意事项](https://dev.mysql.com/doc/extending-mysql/8.0/en/adding-loadable-function.html#loadable-function-security).<br/><br/>还有[安全部署指南](https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/)，它提供了部署 MySQL Enterprise Edition Server 的通用二进制发行版的过程，该发行版具有管理 MySQL 安装安全性的功能。 |
| [](<>)[](<>)<br/><br/>**A.9.2.** | MySQL 8.0 中默认的身份验证插件是什么？ |
|  | MySQL 8.0 中默认的认证插件是`cache_sha2_password`.有关此插件的信息，请参阅[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).<br/><br/>这`cache_sha2_password`插件提供比`mysql_native_password`plugin（之前 MySQL 系列中的默认插件）。有关更改默认插件对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息，请参阅[缓存\_沙2\_密码作为首选身份验证插件](upgrading-from-previous-series.html#upgrade-caching-sha2-password).<br/><br/>有关可插入身份验证和其他可用身份验证插件的一般信息，请参阅[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html)， 和[第 6.4.1 节，“身份验证插件”](authentication-plugins.html). |
| [](<>)[](<>)<br/><br/>**A.9.3.** | MySQL 8.0 是否有对 SSL 的原生支持？ |
|  | 大多数 8.0 二进制文件都支持客户端和服务器之间的 SSL 连接。看[第 6.3 节，“使用加密连接”](encrypted-connections.html).<br/><br/>如果（例如）客户端应用程序不支持 SSL 连接，您也可以使用 SSH 建立隧道连接。例如，请参见[第 6.3.4 节，“使用 SSH 从 Windows 远程连接到 MySQL”](windows-and-ssh.html). |
| [](<>)[](<>)<br/><br/>**A.9.4。** | SSL 支持是否内置在 MySQL 二进制文件中，还是我必须自己重新编译二进制文件才能启用它？ |
|  | 大多数 8.0 二进制文件都为受保护、经过身份验证或两者兼有的客户端/服务器连接启用了 SSL。看[第 6.3 节，“使用加密连接”](encrypted-connections.html). |
| [](<>)[](<>)<br/><br/>**A.9.5。** | MySQL 8.0 是否具有针对 LDAP 目录的内置身份验证？ |
|  | 企业版包括一个[PAM 身份验证插件](pam-pluggable-authentication.html)支持针对 LDAP 目录的身份验证。 |
| [](<>)[](<>)<br/><br/>**A.9.6。** | MySQL 8.0 是否包括对基于角色的访问控制 (RBAC) 的支持？ |
|  | 现在不行。 |
| [](<>)[](<>)<br/><br/>**A.9.7。** | MySQL 8.0是否支持TLS 1.0和1.1？ |
|  | 对TLSv1和TLSv1的支持。1从MySQL 8.0.28开始删除连接协议。MySQL 8.0.26不推荐使用这些协议。有关移除的后果，请参阅[拆除TLSv1和TLSv1的支架。1.协议](encrypted-connection-protocols-ciphers.html#encrypted-connection-deprecated-protocols).<br/><br/>对TLS版本1.0和1.1的支持被删除，因为这些协议版本是旧的，分别于1996年和2006年发布。使用的算法很弱，而且过时。<br/><br/>除非您使用的是非常旧版本的MySQL服务器或连接器，否则不太可能使用TLS 1.0或1.1进行连接。MySQL连接器和客户端默认选择可用的最高TLS版本。<br/><br/>*MySQL服务器何时增加了对TLS 1.2的支持？*2019年，MySQL社区服务器切换到针对MySQL 5.6、5.7和8.0的OpenSSL时，增加了TLS 1.2支持。对于MySQL Enterprise Edition，OpenSSL于2015年在MySQL服务器5.7.10中添加了TLS 1.2支持。<br/><br/>*如何查看正在使用的TLS版本？*对于MySQL 5.7或8.0，通过运行以下查询查看TLS 1.0或1.1是否正在使用：<br/><br/>```<br/>选择“会话状态”`线程\u id`，`session\u ssl\u status``ssl_版本`，<br/>会话_ssl_状态``ssl_密码，`session_ssl_status``ssl_sessions_从sys中重用了`<br/>`session_ssl_status`<br/>其中ssl_版本不在（'TLSv1.3'，'TLSv1.2'）<br/>```<br/><br/>如果线程使用TLSv1。0或TLSv1。1，您可以通过运行以下查询来确定此连接的来源：<br/><br/>``<br/>从sys中选择thd_id、conn_id、user、db、current_语句、program_name<br/>。processlist<br/>其中thd_id IN（<br/>从'sys'中选择'session_ssl_status'。'thread_id`<br/>其中ssl_version NOT IN（'TLSv1.3'，'TLSv1.2'）<br/>）<br/>``<br/><br/>或者，您可以运行以下查询：<br/><br/>``<br/>从系统中选择*<br/>。session<br/>其中thd_id IN（<br/>从'sys'中选择'session_ssl_status'。'thread_id`<br/>其中ssl_version NOT IN（'TLSv1.3'，'TLSv1.2'）<br/>）<br/>``<br/><br/>这些查询提供了确定哪个应用程序不支持TLS 1.2或1.3所需的详细信息，以及这些应用程序的目标升级。<br/><br/>*TLS 1.0或1.1是否有其他测试选项？*是的，您可以在将服务器升级到新版本之前禁用这些版本。明确指定要使用的版本，或者`mysql。cnf`（或`mysql。伊尼`)或者使用[`设定持续时间`](set-variable.html)，例如：[`--tls版本=TLSv12`](server-system-variables.html#sysvar_tls_version).<br/><br/>*是否所有MySQL连接器（5.7和8.0）都支持TLS1.2及更高版本？关于C和C++应用程序的使用`libmysql`?*适用于C和C++应用社区`libmysqlclient`库，使用基于OpenSSL的库（即*不*使用YaSSL）。OpenSSL的使用在2018年实现了统一（分别在MySQL 8.0.4和5.7.28中）。这同样适用于Connector/ODBC和Connector/C++。要确定使用了哪些库依赖项，请运行以下命令以查看是否列出了OpenSSL。在Linux上，使用以下命令：<br/><br/>`<br/>$>sudo ldd usr/local/mysql/lib/libmysqlclient。a | grep-i openssl<br/>`<br/><br/>在MacOS上，使用以下命令：<br/><br/>`sudo otool-l/usr/local/mysql/lib/libmysqlclient。a | grep-i openssl<br/>`<br/><br/>*那么连接器/J呢？*2014年1月，Java 8作为默认版本改为TLS 1.2；在此之前，TLS 1.2就已经得到了支持，所以除非您运行的是非常旧的Connector/J版本，否则您将获得TLS 1.2支持。<br/><br/>*连接器/网络呢？*对于NET应用程序，微软在2020年底停止了对TLS 1.0和1.1的支持。2012年增加了对TLS 1.2的支持。要不支持TLS 1.2，您需要使用非常旧的Connector/NET版本。<br/><br/>*那么连接器/Python呢？*这取决于您运行的Python版本。Python 2.6中的SSL模块仅支持版本1.0之前的TLS。在这种情况下，您需要升级到Python2.7.9或更高版本，或Python3。x、 两者都支持更新版本的TLS。有关详细信息，请参阅[连接器/Python版本](https://dev.mysql.com/doc/connector-python/en/connector-python-versions.html)和<https://www.calazan.com/how-to-check-if-your-python-app-supports-tls-12/>.<br/><br/>*那么连接器/节点呢。js还是节点MySQL2？*TLS随附`诺德斯`，以及所有受支持的节点版本。js使用OpenSSL v1。1.1（截至2020年4月），再次支持TLS 1.2及更高版本。<br/><br/>*PHP呢？* [这些版本的PHP](https://www.php.net/supported-versions.php)支持TLS 1.2及更高版本。 |
