MySQL5.7 SSL配置和启用

时间:2024-04-16 18:32:42

一、安装时启动SSL

[root@linux-node local]# /usr/local/mysql5.7/bin/mysqld --initialize --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data/ --user=mysql
[root@linux-node local]# /usr/local/mysql5.7/bin/mysql_ssl_rsa_setup 

当运行完这个命令后,默认会在data(数据)目录下生成以下pem文件,这些文件就是用于启用SSL功能的

[root@linux-node local]# ll /usr/local/mysql5.7/data/*.pem                             
-rw-------. 1 /usr/local/mysql5.7/data/ca-key.pem        #CA私钥
-rw-r--r--. 1 /usr/local/mysql5.7/data/ca.pem            #自签CA证书,客户端连接也需要提供    
-rw-r--r--. 1 /usr/local/mysql5.7/data/client-cert.pem   #客户端连接服务器端需要提供的证书文件
-rw-------. 1 /usr/local/mysql5.7/data/client-key.pem    #客户端连接服务器端需要提供的私钥文件
-rw-------. 1 /usr/local/mysql5.7/data/private_key.pem   #私钥/公钥对的私有成员
-rw-r--r--. 1 /usr/local/mysql5.7/data/public_key.pem    #私钥/公钥对的共有成员
-rw-r--r--. 1 /usr/local/mysql5.7/data/server-cert.pem   #服务器端证书文件
-rw-------. 1 /usr/local/mysql5.7/data/server-key.pem    #服务器端私钥文件

这里写图片描述

在配置文件中指定ssl证书路径

ssl-ca=/usr/local/mysql5.7/data/ca.pem
ssl-cert=/usr/local/mysql5.7/data/server-cert.pem
ssl-key=/usr/local/mysql5.7/data/server-key.pem

二、进入数据库查看
1、查看变量值

mysql> show global variables like \'%ssl%\';

这里写图片描述

2、查看 test用户的连接方式

mysql>\s;

这里写图片描述

3、如果用户是采用本地localhost或者sock连接数据库,那么不会使用SSL方式了
这里写图片描述

三、如果安装MySQL5.7时没有运行过mysql_ssl_rsa_setup,那么如何开启SSL

1、关闭MySQL服务
2、运行mysql_ssl_rsa_setup 命令
3、到data_dir目录下修改.pem文件的所属权限用户为mysql chown -R mysql.mysql *.pem
4、启动MySQL服务

四、强制某用户必须使用SSL连接数据库

#更改已经存在用户
mysql> alter mysql.user test@\'%\' require ssl;

#新建必须使用ssl用户
mysql> grant all on *.* to \'slave\'@\'192.168.133.1\' identified by \'ASDF123asdf\' require ssl;
mysql> flush privileges;

对于强制使用SSL连接的用户,如果不是使用ssl连接的就会报错

[root@linux-node ~]# mysql -uslave  -pASDF123asdf -h 192.168.133.1 --ssl=0   #不启用ssl连接
[root@linux-node ~]# mysql -uslave  -pASDF123asdf -h 192.168.133.1 [--ssl-ca=/usr/local/mysql5.7/data/ca.pem]   #启用ssl连接


错误提示(Error)

JAVA_HOME=/usr/java/jdk1.8.0_121
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
Sat Apr 22 19:09:20 CST 2017 WARN: Establishing SSL connection without server\'s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn\'t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to \'false\'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
 

六JDBC客户端的解决方法

连接字符串url中加入ssl=true或false:

url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8&useSSL=true

 

--------------------- 本文来自 幸福丶如此 的**** 博客 ,全文地址请点击:https://blog.****.net/m0_37886429/article/details/79077487?utm_source=copy