mysql 8.0 开启自带 ssl证书

> 作者:马顺华

> 从事运维管理工作多年,目前就职于某科技有限公司,熟悉运维自动化、OceanBase部署运维、MySQL 运维以及各种云平台技术和产品。并已获得OceanBase认证OBCA、OBCP 证书、OpenGauss社区认证结业证书。OceanBase & 墨天轮第二、三、四届技术征文大赛,多次获得 一、二、三 等奖,时常在墨天轮发布原创技术文章,并多次被首页推荐。

MYSQL版本8.0.32,默认是开启ssl的,同时也是自带证书的在/var/lib/mysql/下

一、概述

当 MySQL 8 在启动时自动在 datadir 目录下生成一堆证书,这通常与新的 MySQL 8 默认配置中的加密功能有关。从 MySQL 8.0 开始,默认情况下启用了对客户端和服务器的 SSL/TLS 加密连接。

二、ssl证书设置

获取CA(证书授权)证书、服务器证书和服务器私钥。这些文件通常为.pem格式。
确保这些文件的权限设置正确,只有数据库管理员能够访问。
auto_generate_certs
默认为on,会影响datadir目录下证书:
ca.pem
ca-key.pem
server-cert.pem
server-key.pem
client-cert.pem
client-key.pem

设置为off,可以将当前证书删除后,重启mysql8的时候,不再自动生成上述证书

三、rsa证书设置

sha256_password_auto_generate_rsa_keys 和 caching_sha2_password_auto_generate_rsa_keys
默认都为on,会影响datadir目录下证书:
private_key.pem
public_key.pem

这俩参数同时设置为off,可以将当前证书删除后,重启mysql8的时候,不再自动生成上述证书

四 、连接Mysql数据库需要使用SSL时,可以按一下步骤进行设置:

前置条件(可跳过):

1.新建SSL用户

2.对用户使用ssl

3.查看用户情况

mysql> CREATE USER 'qq'@'%' IDENTIFIED BY 'tootbaip#2023'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL ON *.* TO 'qq'@'%'; Query OK, 0 rows affected (0.02 sec) mysql> ALTER USER 'qq'@'%' REQUIRE SSL; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SELECT ssl_type From mysql.user Where user="qq"; +----------+ | ssl_type | +----------+ | ANY | +----------+ 1 row in set (0.00 sec) mysql>