2021年底等级包含变得更加严格了,以前中风险的现在有变高风险了,其中一点就要求我们mysql开启ssl连接,然后故事和事故就来了。

说明下我的情况:
服务器:centos7
docker
mysql镜像是:mysql:5.7
实际服务器版本为:5.7.31-log

我的解决过程是百度如何开启ssl,还有点搞笑,先教我用OpenSSL玩一遍,一堆命令,我第一次玩还要搞清楚他每个对话的意思,含义慢慢填写,这次已经有经验了快了不少,但还是恨没有先阅读一遍。用工具只需要一行命令就生成完事了(mysql_ssl_rsa_setup)
mysql_ssl_rsa_setup --datadir /etc/mysql/cert-mysql/

然后我就开始配置了,我熟练的找到了我的配置文件路径并且加上了

// /etc/mysql/conf.d
ssl-ca=/etc/mysql/cert-mysql/ca.pem
ssl-cert=/etc/mysql/cert-mysql/server-cert.pem
ssl-key=/etc/mysql/cert-mysql/server-key.pem

然后重启
show VARIABLES like ‘%ssl%’;
的确看到了我刚刚配置的信息
但是
have_ssl还是DISABLED

后来感觉是路径错了,我挨个使用了stat检查了路径,发现并没有错误

然后继续找资料,有些在使用工具“mysql_ssl_rsa_setup”并没有指定目录,然后我也尝试执行了,教程是打印了我上面指定目录时候输出的日志而我的并没有,显然是失败了

我前往他们说的默认输出目录(即数据库目录)去看,发现已经有了,日期还是很久很久以前的日期。这时候在仔细阅读的时候,发现需要停止服务,我崩溃了,docker停止mysql那不就等于容器停止了,停止了容器我的命令基本上执行不上去了,基本上到了死胡同了

越来越想不通了,我打算通过docker cp的方式覆盖原本的*.pem证书,但是这个是很危险的,所以打算先搞一个容器

我就用了以前我本机上的一个mysql容器,然后我呆住了,TND,居然默认是打开的,我不解了为啥我的不行,唯一的可能就是有关闭的设置

然后百度下,好家伙果然有
在这里插入图片描述

然后我就开始找我的配置了

# cat /etc/mysql/my.cnf
# ........
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

意思就是这两个目录的都加载进来,我在mysql.conf.d目录里面的一个配置文件中,成功找到了skip-ssl,然后注释掉他,重启容器

终于可以了,泪目,害我半个上午

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐