3.4.3. 对特定的用户帐户需要 TLS 加密连接
您可以配置特定的 MySQL 帐户,以要求 TLS 加密连接来保护敏感数据传输。
如果您无法在服务器上配置所有连接都需要安全传输(require_secure_transport = on),请将单个用户帐户配置为需要 TLS 加密。
先决条件
- MySQL 服务器启用了 TLS 支持。
- 您配置为需要安全传输的用户已存在。
- CA 证书存储在客户端上。
流程
以管理员用户身份连接到 MySQL 服务器:
# mysql -u root -p -h server.example.com如果您的管理用户没有远程访问服务器的权限,请在 MySQL 服务器上执行命令,并连接到
localhost。使用
REQUIRE SSL子句强制用户必须使用 TLS 加密连接进行连接:MySQL [(none)]> ALTER USER 'example'@'%' REQUIRE SSL;
验证
使用 TLS 加密,以
example用户身份连接到服务器:# mysql -u example -p -h server.example.com ... MySQL [(none)]>如果没有显示错误,并且您可以访问交互式 MySQL 控制台,则与 TLS 的连接成功。
默认情况下,如果服务器提供,客户端会自动使用 TLS 加密。因此,
--ssl-ca=ca.crt.pem和--ssl-mode=VERIFY_IDENTITY选项不是必需的,但提高了安全性,因为使用这些选项,客户端可以验证服务器的身份。尝试以禁用 TLS 的
example用户身份进行连接:# mysql -u example -p -h server.example.com --ssl-mode=DISABLED ERROR 1045 (28000): Access denied for user 'example'@'server.example.com' (using password: YES)服务器拒绝登录尝试,因为此用户需要 TLS,但禁用了(
--ssl-mode=DISABLED)。