MySQL - [16] SSL
MySQL8的SSL功能可以帮助用户更安全地管理数据库,提高数据安全性。
一、SSL概念
SSL(Secure Socket Layer:安全套接字)利用数据加密,身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议。
SSL协议提供的功能主要有:
(1)数据传输的机密性:利用对称密钥算法对传输的数据进行加密
(2)身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的
(3)消息完整性验证:消息传输过程中使用MAC算法来校验消息的完整性。
如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的。
在数据库方面,客户端连接服务器使用SSL连接,能加密通信数据。
(1)启动SSL:可以在MySQL配置文件中启用SSL,需要指定SSL证书、私钥和CA证书的路径。
(2)SSL握手验证:MySQL8支持SSL握手验证,可以确保客户端连接到正确的服务器。
(3)SSL客户端认证:MySQL8支持客户端证书认证,可以进一步增强安全性。
(4)SSL连接限制:可以通过修改MySQL配置文件中的参数来限制SSL连接的最大数量和连接的最大并发数。
二、MySQL实现SSL的流程
(1)先为MySQL服务器创建SSL证书和私钥
(2)在MySQL里面配置SSL,并启动服务
(3)创建用户的时候带上SSL标签(require ssl)
(4)连接数据库的时候带上SSL
三、MySQL配置SSL
3.1、SSL策略
--ssl-mode是MySQL命令行客户端的一个选项,用于指定SSL/TLS连接的模式。
可供选择的值:DISABLED(禁用SSL)、REQUIRED(必须使用SSL)、VERIFY_CA(验证CA)、VERIFY_IDENTITY(验证身份)
3.2、创建证书
(1)安装openssl依赖包:yum install -y openssl
(2)查看openssl版本:openssl version
(3)生成SSL连接所需RSA密钥对
mysql_ssl_rsa_setup --datadir=/var/lib/mysql --user=mysql --uid=mysql
# datadir: 指定数据库文件路径
# user、uid:指定运行mysql_ssl_rsa_setup命令的用户
会在datadir目录下自动生成以下文件
(1)
ca-key.pem:CA证书私钥文件,用于生成SSL连接所需的服务器和客户端证书。
(2)ca.pem:CA证书公钥文件,用于验证SSL连接中服务器和客户端证书的合法性。
(3)client-cert.pem:客户端证书,在SSL连接中用于验证客户端的身份。
(4)client-key.pem:客户端证书的私钥,用于加密和解密SSL连接中客户端发送的数据。
(5)private_key.pem:私钥文件,用于加密和解密SSL连接中的数据。
(6)public_key.pem:公钥文件,用于验证SSL连接中的数据。
(7)server_cert.pem:服务器证书,用于验证MySQL数据库服务器的身份。
(8)server_key.pem:服务器证书的私钥,用于加密和解密SSL连接中服务器发送的数据。
3.3、配置证书
(1)配置my.ini文件
[mysqld]
# 指定CA证书公钥文件的路径
ssl-ca=/path/to/ca.pem
# 指定mysql服务器证书的路径
ssl-cert=/path/to/server_cert.pem
# 指定mysql服务器证书的私钥路径
ssl-key=/path/to/server_key.pem
[client]
# 指定CA证书公钥文件的路径
ssl-ca=/path/to/ca.pem
# 指定mysql客户端证书的路径
ssl-cert=/path/to/client_cert.pem
# 指定mysql客户端证书的私钥路径
ssl-key=/path/to/client_key.pem
(2)重启mysql服务:systemctl restart mysqld
3.4、检查SSL配置
(1)查看MySQL服务器是否支持SSL:SHOW VARIABLES LIKE 'have_ssl';
Tips:如果输出显示 have_ssl 的值为 YES,则表明MySQL支持SSL。
(2)查看全局变量中包含"SSL"字符的所有变量名和值:show global variable like "%SSL%";
(3)查看tls安全传输版本:show global variables like "tls_version";
(4)检查SSL证书和密钥是否已被配置:SHOW VARIABLES LIKE 'ssl%';
Tips:查看输出结果中是否有ssl_ca、ssl_cert和ssl_key等变量存在,并且这些变量的值不为空,表示SSL配置已经存在。
(5)检查当前的连接是否使用了SSL:SHOW STATUS LIKE 'Ssl_cipher';
Tips:如果Ssl_cipher的值不是NULL或空字符串,那么当前连接正在使用SSL。
(6)检查当前连接使用的SSL版本和协议:
SHOW STATUS LIKE 'Ssl_version';
SHOW STATUS LIKE 'Ssl_session_reuses';
(7)检查SSL会话状态
SHOW STATUS LIKE 'Ssl_accept_renegotiates';
SHOW STATUS LIKE 'Ssl_accepts';
SHOW STATUS LIKE 'Ssl_connect_renegotiates';
SHOW STATUS LIKE 'Ssl_connected';
SHOW STATUS LIKE 'Ssl_server_not_finished';
3.5、配置SSL用户
(1)创建用户普通认证方式
-- 创建用户
create user 用户名@'%' identified by '密码';
-- 给用户赋权
grant all on *.* to 用户名@'%';
-- 应用权限配置
flush privileges;
-- 查看用户权限
select user,host,ssl_type,ssl_cipher from mysql.user;
(2)创建用户强制证书认证
-- require ssl强制用户使用证书认证
create user 用户名@'%' identified by '密码' require ssl;
-- require x509强制用户使用证书认证
create user 用户名@'%' identified by '密码' require x509;
-- 给用户授权
grant all on *.* to 用户名@'%';
-- 应用权限配置
flush privileges;
-- 查看用户权限
select user,host,ssl_type,ssl_cipher from mysql.user;
(3)设置用户强制证书登录
-- 设置强制ssl
alter user user0001@'%' require ssl;
-- 取消强制ssl
alter user user0001@'%' require none;
3.6、SSL登录
(1)加密登录方法1
# --ssl-mode=disable: 表示关闭SSL加密模式
mysql -uroot -p --ssl-mode=disable
# 登录mysql后查看加密模式
status
# --ssl-ode=required: 标识强制开启SSL加密模式
mysql -uroot -p --ssl-mode=required
# 登录mysql后查看加密模式
status
(2)加密登录方法2
# 指定CA证书及客户端证书及私钥
mysql -uroot -p --ssl-ca=/var/lib/mysql/ca.pem \
--ssl-cert=/var/lib/mysql/client-cert.pem \
--ssl-key=/var/lib/mysql/client-key.pem
— 业精于勤荒于嬉,行成于思毁于随 —
MySQL - [16] SSL的更多相关文章
- Mysql的ssl主从复制+半同步主从复制
Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...
- MySQL开启SSL认证,以及简单优化
1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...
- mysql -- mysql基于ssl的主从复制
mysql基于ssl的主从复制由于mysql在复制过程中是明文的,所以就大大降低了安全性,因此需要借助于ssl加密来增加其复制的安全性. 主服务器node1:172.16.200.1从服务器node2 ...
- mysql建立ssl安全连接的配置
mysql建立ssl安全连接的配置 1.环境.IP.安装包: centOS 5.4 虚拟机了两台服务器 mysql-5.1.48.tar.gz openssl-0.9.8b.tar.gz server ...
- Java连接mysql——Establishing SSL connection without server's identity verification is not recommended.
Establishing SSL connection without server's identity verification is not recommended. 出现这个错误的原因是因为m ...
- MySQL 使用 SSL 连接(附 Docker 例子)
查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...
- Mysql使用SSL连接
最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...
- MySQL的SSL加密连接与性能开销
本文转载自:http://www.innomysql.net/article/23959.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Contents [hide] 1 前言 ...
- mysql 提示ssl问题
问题信息如下: rements SSL connection must be established by default if explicit option isn't set. For comp ...
- SpringBoot设置mysql的ssl连接
因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接. 开发环境信息: SpringBoot: 2.0.5.RELEASE mysql-connector-java: 8 ...
随机推荐
- python+playwright安装+使用vsocde运行代码
python虚拟环境 1.安装python,环境配置 2.修改pip镜像源 3.新增虚拟环境 注意路径,例子的路径是在python的目录下生成一个venv文件夹 进入venv文件夹,使用virtual ...
- 【报错解决】【Python】'Failed to import pydot. You must pip install pydot and install graphviz (https://graphviz.gitlab.io/download/), ', 'for pydotprint to work.'
可视化函数式API的形式seq2seq模型的过程中发生报错. 报错内容: 'Failed to import pydot. You must pip install pydot and install ...
- HTMLreport报告(五) -- 测试报告中添加截图
一.需求痛点 HTMLreport报告没有截图 二.实现办法 1.思路:使用viewer.js图片查看器,用cdn:后端部分用 unittest.test_result中的内容 2.实现步骤 1)vi ...
- Alpine介绍与apk的基本使用
前言 Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但 ...
- Swagger注解-@ApiModel 和 @ApiModelProperty
@ApiModel 使用场景 在实体类上边使用,标记类时swagger的解析类 概述 提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省 属性 属性名称 数据类型 默认值 说明 va ...
- manim边学边做--同伦变换
在Manim中,移动一个元素除了之前介绍的方法之外,还可以通过同伦运算来移动一个元素. 与普通的移动元素方式相比,使用同伦运算移动一个元素时,实际上是在考虑整个空间的连续变形过程中元素的相应变化. 这 ...
- Centos7安装VNCserver,并设置为开机自启动服务的方法
参考链接: 1.How To Install and Configure VNC Remote Access for the GNOME Desktop on CentOS 7 2.Centos7作为 ...
- spark (一) 入门 & 安装
目录 基本概念 spark 核心模块 spark core (核心) spark sql (结构化数据操作) spark streaming (流式数据操作) 部署模式 local(本地模式) sta ...
- 在MBP上运行推理LLaMA-7B&13B模型
在MBP上运行推理LLaMA-7B模型 build this repo # build this repo git clone https://github.com/ggerganov/llama.c ...
- Pytorch损失函数总结
损失函数 nn.L1Loss 创建一个衡量输入中每个元素之间的平均绝对误差 (MAE) 的标准XX和目标是的是的. nn.MSELoss 创建一个标准,用于测量输入中每个元素之间的均方误差(平方 L2 ...