MySQL5.7 SSL配置和启用

本文详细介绍了MySQL数据库中SSL功能的配置与使用方法,包括安装时启用SSL、配置SSL证书路径、强制用户使用SSL连接等步骤,并提供了具体的命令示例。

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

一、安装时启动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连接
### MySQL 5.7MySQL 8.0之间的SSL配置使用差异 #### SSL支持的变化 在MySQL 5.7版本中,已经引入了较为完善的SSL/TLS安全连接的支持功能。而在升级到MySQL 8.0之后,官方进一步增强了这方面的特性,在默认情况下启用了更严格的安全策略[^1]。 对于服务器端而言,两个版本均允许通过修改`my.cnf`(Linux) 或 `my.ini`(Windows) 配置文件来设置SSL参数。然而,在具体选项上存在一些不同之处: - **证书路径指定** - 在MySQL 5.7里,可以通过如下几个变量定义CA根证书、服务端私钥以及公钥的位置: - ssl-ca=/path/to/ca-cert.pem - ssl-key=/path/to/server-key.pem - ssl-cert=/path/to/server-cert.pem - 到达MySQL 8.0时,除了上述三个基本项外还增加了对椭圆曲线加密算法(ECC) 的支持,并新增了一个用于ECDHE密钥交换模式下的临时DH参数文件指针——ssl-dhparams-file=/path/to/dhparam.pem[^2] - **协议版本控制** - 自MySQL 8.0起,默认禁用了TLSv1 TLSv1.1 协议版本;只保留了更为安全的TLSv1.2及以上版本作为可选通信方式。而在此之前的老版数据库产品则可能仍然兼容较低级别的传输层安全性标准[^3]. - **客户端验证机制改进** - 当前最新一代的产品线加强了双向认证流程中的身份校验力度,即不仅限于检查对方所提供的数字凭证的有效性,还会依据特定条件动态调整握手过程中的行为逻辑。例如当启用require_secure_transport=true全局系统变量后,除非采用经过签名确认的身份证明材料建立会话通道,否则一律拒绝外部访问请求[^4]. ```sql -- 设置全局变量以强制要求安全传输 (适用于MySQL 8.0) SET GLOBAL require_secure_transport = 'ON'; ``` 此外值得注意的是,尽管新旧两代平台都提供了相似的功能接口供开发者调用,但在实际部署过程中应当充分考虑到各自环境特点并参照相应手册完成必要的适配工作。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值