

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 无法连接到 MySQL（SSL 和授权问题）
<a name="troubleshoot-connect-mysql"></a>

要检查 MySQL 中的一些常见连接问题，请使用以下步骤。该过程将帮助您了解是否已启用 SSL 并授予使用权限。

**查找 MySQL 中一些常见连接问题的解决方案**

1. 检查 `/etc/my.cnf` 确保已为 MySQL 启用 SSL。

1. 在 MySQL 中，运行以下命令。

   ```
   show status like 'Ssl%';
   ```

   如果 SSL 正在运行，将看到类似于下面的结果。

   ```
   +--------------------------------+----------------------+
   | Variable_name                  | Value                |
   +--------------------------------+----------------------+
   | Ssl_accept_renegotiates        | 0                    |
   | Ssl_accepts                    | 1                    |
   | Ssl_callback_cache_hits        | 0                    |
   | Ssl_cipher                     |                      |
   | Ssl_cipher_list                |                      |
   | Ssl_client_connects            | 0                    |
   | Ssl_connect_renegotiates       | 0                    |
   | Ssl_ctx_verify_depth           | 18446744073709551615 |
   | Ssl_ctx_verify_mode            | 5                    |
   | Ssl_default_timeout            | 0                    |
   | Ssl_finished_accepts           | 0                    |
   | Ssl_finished_connects          | 0                    |
   | Ssl_session_cache_hits         | 0                    |
   | Ssl_session_cache_misses       | 0                    |
   | Ssl_session_cache_mode         | SERVER               |
   | Ssl_session_cache_overflows    | 0                    |
   | Ssl_session_cache_size         | 128                  |
   | Ssl_session_cache_timeouts     | 0                    |
   | Ssl_sessions_reused            | 0                    |
   | Ssl_used_session_cache_entries | 0                    |
   | Ssl_verify_depth               | 0                    |
   | Ssl_verify_mode                | 0                    |
   | Ssl_version                    |                      |
   +--------------------------------+----------------------+
   ```

   如果 SSL 已禁用，将看到类似于下面的结果。

   ```
   +--------------------------------+-------+
   | Variable_name                  | Value |
   +--------------------------------+-------+
   | Ssl_accept_renegotiates        | 0     |
   | Ssl_accepts                    | 0     |
   | Ssl_callback_cache_hits        | 0     |
   | Ssl_cipher                     |       |
   | Ssl_cipher_list                |       |
   | Ssl_client_connects            | 0     |
   | Ssl_connect_renegotiates       | 0     |
   | Ssl_ctx_verify_depth           | 0     |
   | Ssl_ctx_verify_mode            | 0     |
   | Ssl_default_timeout            | 0     |
   | Ssl_finished_accepts           | 0     |
   | Ssl_finished_connects          | 0     |
   | Ssl_session_cache_hits         | 0     |
   | Ssl_session_cache_misses       | 0     |
   | Ssl_session_cache_mode         | NONE  |
   | Ssl_session_cache_overflows    | 0     |
   | Ssl_session_cache_size         | 0     |
   | Ssl_session_cache_timeouts     | 0     |
   | Ssl_sessions_reused            | 0     |
   | Ssl_used_session_cache_entries | 0     |
   | Ssl_verify_depth               | 0     |
   | Ssl_verify_mode                | 0     |
   | Ssl_version                    |       |
   +--------------------------------+-------+
   ```

1. 确保已在数据库服务器上安装支持的 SSL 证书。

1. 授予特定用户使用 SSL 连接的权限。

   ```
   GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;                        
   ```

**注意**  
适用于 MySQL 连接的 TLS 1.2 需要 MySQL 版本 5.7.28 或更高版本。如果您的 MySQL 服务器仅强制执行 TLS 1.2（例如`tls_version = TLSv1.2`），并且服务器版本低于 5.7.28，则 SSL 握手会失败并出现错误。`Communications link failure`要解决这个问题，请将你的 MySQL 或 Aurora MySQL 数据库升级到版本 5.7.28 或更高版本。

有关本例中的解决方案的更多详细信息，请参阅以下内容：
+ 《Amazon RDS 用户指南》**中的 [MySQL 数据库实例的 SSL 支持](https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport.html)。
+ 《Amazon RDS 用户指南》**中的[使用 SSL 加密与数据库实例的连接](https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)。
+ [MySQL 文档](https://dev.mysql.com/doc/refman/5.6/en/using-encrypted-connections.html)