Mysql 中的SSL 连接

本文介绍了MySQL中SSL连接的配置,包括`require_secure_transport`参数的OFF和ON模式,以及PEM文件的使用。在ON模式下,必须使用SSL加密连接。通过创建用户、复制PEM文件等步骤,演示了如何成功建立SSL连接。同时指出,PEM文件在客户端复制一次后即可永久使用,但服务端的PEM文件不可删除,因为数据库重启会生成新的PEM文件,导致远程连接失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql 中的SSL 连接

以下来自网络参考和自己测试整理,没有查找相关资料。若有错误之处,欢迎指正。

当前的Mysql 客户端版本基本都不太能支持 caching_sha2_password 认证,使用Mysql 8.0 的话,建议添加参数:

default-authentication-plugin=mysql_native_password

否则可能导致客户端连接失败。以下的案例也是基于此。客户端的不支持会导致不能反映真实结果。

当前数据库中的用户

 

root@(none):53: >select host,user,ssl_type,ssl_cipher,x509_issuer,x509_subject,plugin from mysql.user;
+--------------+------------------+----------+------------+-------------+--------------+-----------------------+
| host         | user             | ssl_type | ssl_cipher | x509_issuer | x509_subject | plugin                |
+--------------+------------------+----------+------------+-------------+--------------+-----------------------+
| %            | rep              |          |            |             |              | mysql_native_password |
| %            | root             |          |            |             |              | mysql_native_password |
| %            | test             |          |            |             |              | mysql_native_password |
| %            | test1            |          |            |             |              | caching_sha2_password |
| 192.168.20.% | cat              | X509     |            |             |              | mysql_native_password |
| localhost    | mysql.infoschema |          |            |             |              | caching_sha2_password |
| localhost    | mysql.session    |          |            |             |              | caching_sha2_password |
| localhost    | mysql.sys        |          |            |             |              | caching_sha2_password |
| localhost    | root             |          |            |             |              | caching_sha2_password |
+--------------+------------------+----------+------------+-------------+--------------+-----------------------+
10 rows in set (0.00 sec)

require_secure_transport = OFF 模式

此为默认设置,该模式下用户可以不通过ssl加密连接到数据库

-- 不通过SSL连接方式
mysql -h mysql1 -utest -ptest --ssl-mode=DISABLED
SSL:                    Not in use
​
-- 通过SSL连接方式
mysql -h mysql1 -utest -ptest
mysql -h mysql1 -utest -ptest --ssl-mode=PREFERRED
mysql -h mysql1 -utest1 -ptest1 --ssl-mode=PREFERRED
mysql -h mysql1 -utest1 -ptest1 --ssl-mode=REQUIRED
SSL:                    Cipher in use is DHE-RSA-AES128-GCM-SHA256

  

navicate 只配置常规选项卡即可连接

要为MySQL数据库建立SSL连接,需要完成以下步骤: 1. 准备SSL证书和密钥文件: 首先,你需要为服务器和客户端准备SSL证书和密钥。这通常包括CA(证书颁发机构)证书、服务器证书、服务器私钥以及可选的客户端证书和客户端私钥。 2. 配置MySQL服务器使用SSL: 接下来,你需要在MySQL服务器配置文件(通常是`my.cnf`或`my.ini`)中指定SSL相关的配置项,确保服务器被配置为接受SSL连接。例如: ``` [mysqld] ssl-ca=/path/to/ca.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem ``` 其中`ssl-ca`指向CA证书文件,`ssl-cert`指向服务器证书文件,`ssl-key`指向服务器私钥文件。 3. 启动MySQL服务器并验证配置: 重启MySQL服务,然后使用以下命令检查服务器是否已经正确配置SSL连接: ``` SHOW VARIABLES LIKE 'have_ssl'; ``` 如果输出为`YES`,表示SSL支持已经启用。 4. 客户端配置SSL连接: 客户端连接时需要指定使用SSL。如果你使用命令行客户端,可以通过以下方式指定SSL参数: ``` mysql -h hostname -u username -p --ssl-ca=/path/to/ca.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem ``` 如果客户端不需要使用特定的客户端证书,那么可以省略与客户端证书相关的参数。 5. 连接并验证SSL连接连接成功后,可以运行以下命令来验证当前连接是否为SSL连接: ``` SHOW STATUS LIKE 'Ssl_cipher'; ``` 如果该命令返回了SSL加密的相关信息,说明当前连接是通过SSL进行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值