环境:
OS:centos7
MySQL: 5.7.33
一、MySQL开启ssl连接支持
查看是否开启
登录MySQL,运行如下命令:
SHOW VARIABLES LIKE '%ssl%';
如下图,表示已开启支持
开启ssl连接支持
若未开启,通过以下步骤:
- 关闭MySQL服务
- 运行如下命令:
mysql_ssl_rsa_setup –-data-dir=/data/mysql-ssl --uid=mysql
其中:–-data-dir:指定证书和密钥存放位置;–uid:指定所属用户 - 查看生成的密钥和证书
二、MySQL配置文件
- 强制ssl验证
在[mysqld]下添加如下代码:
require_secure_transport = ON - 指定服务端密钥和证书路径
在[mysqld]下添加如下代码:
ssl-ca = /data/mysql-ssl/ca.pem
ssl-cert = /data/mysql-ssl/server-cert.pem
ssl-key = /data/mysql-ssl/server-key.pem - 指定客户端密钥和证书路径
在[client]下添加如下代码:
ssl-ca = /data/mysql-ssl/ca.pem
ssl-cert = /data/mysql-ssl/client-cert.pem
ssl-key = /data/mysql-ssl/client-key.pem
三、配置用户ssl连接
首先登录mysql
- 已存在用户
ALTER USER 'root'@'19.130.%' REQUIRE SSL;
FLUSH PRIVILEGES;
- 新建用户
GRANT ALL PRIVILEGES ON *.* TO 'ssl_test'@'%' IDENTIFIED BY 'ssl_test' REQUIRE SSL;
FLUSH PRIVILEGES;
四、远程连接配置
(一)Linux中命令行连接
1、从MySQL服务器下载客户端证书到本地
ca.pem, client-key.pen, client-cert.pem
2、命令行登录
命令行登录又两种方式,都需要解决密钥和证书的使用问题。
(1)命令行中指定密钥和证书路径
mysql --ssl-ca=/data/mysql3307/data/ca.pem --ssl-cert=/data/mysql3307/data/client-cert.pem --ssl-key=/data/mysql3307/data/client-key.pem -uroot -p
(2)配置文件中指定密钥和证书路径,命令行无需再指定,此方法更方便
在当前用户的根目录(cd ~)下创建./my.cnf文件(隐藏文件),添加如下内容:
[client]
ssl-ca = /data/mysql3307/data/ca.pem
ssl-cert = /data/mysql3307/data/client-cert.pem
ssl-key = /data/mysql3307/data/client-key.pem
登录命令会自行调用配置文件中的参数。
(二)windows中Navicat连接
1、从MySQL服务器下载客户端证书到本地
ca.pem, client-key.pen, client-cert.pem
2、navicate开启ssl连接,并配置证书和密钥
注:navicat请使用15.0版本
(三)java连接
在url中添加 useSSL=true 参数
jdbc:mysql://Your ip:Your Port/Database?serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8