mysql配置SSL证书登录的实现


Posted in MySQL onSeptember 04, 2021

前言

国家等级保护三级安全要求,mysql 的 ssl 需要安全证书加密,这里需要研究一下,选几个账户演示下即可。mysql 的版本为 8.0.20

一、Mysql 启用 SSL 配置

1.1 检查是否开启 ssl

mysql> show variables like '%ssl%';
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| have_openssl       | YES             |  
| have_ssl           | YES             |  # 已开启ssl
| mysqlx_ssl_ca      |                 |
| mysqlx_ssl_capath  |                 |
| mysqlx_ssl_cert    |                 |
| mysqlx_ssl_cipher  |                 |
| mysqlx_ssl_crl     |                 |
| mysqlx_ssl_crlpath |                 |
| mysqlx_ssl_key     |                 |
| ssl_ca             | ca.pem          |
| ssl_capath         |                 |
| ssl_cert           | server-cert.pem |
| ssl_cipher         |                 |
| ssl_crl            |                 |
| ssl_crlpath        |                 |
| ssl_fips_mode      | OFF             |
| ssl_key            | server-key.pem  |
+--------------------+-----------------+
17 rows in set (0.56 sec)

1.2 设置用户是否使用 SSL 连接

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
|          |
+----------+
1 row in set (0.05 sec)

默认用户是没有使用 SSL 登录的。
我们可以强制这个管理用户使用 SSL 登录。

alter user 'xxx'@'%' require ssl;
取消ssl验证:
alter user 'xxx'@'%' require none;

更改后,该账户就无法登录了,查看状态变成下面这种

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
| ANY      |
+----------+
1 row in set (0.01 sec)

测试登录,本机无法直接登录。

[root@localhost data]# mysql -u dev_fqr -p
Enter password: 
ERROR 2026 (HY000): SSL connection error: SSL is required but the server doesn't support it

远程客户端无法直接登录:

mysql配置SSL证书登录的实现

1.3 使用 SSL 登录

要想通过 SSL 登录,就需要用到下面这几个证书,通过 client 证书 与 server 端进行校验通过才能登录成功。

mysql配置SSL证书登录的实现

1) 本机登录

在 data 目录下的三个文件证书登录。

[root@localhost data]# mysql -udev_fqr -pDev@fqr2021 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 8.0.22 MySQL Community Server - GPL
​
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
​
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
You are enforcing ssl connection via unix socket. Please consider
switching ssl off as it does not make connection via unix socket
any more secure.
mysql>

2)navicate 远程客户端登录

把这三个证书下载下来

mysql配置SSL证书登录的实现

配置证书目录,即可远程访问:

mysql配置SSL证书登录的实现

二、总结

因为测评的时候不会看 JDBC 里面的配置,所以 JDBC 就不改了,不然要改动的地方非常的多,具体演示的时候可以用提前准备两个账号,到时候用客户端连接即可。
目前两台 mysql 的ssl 用户如下:

mysql配置SSL证书登录的实现

到此这篇关于mysql配置SSL证书登录的实现的文章就介绍到这了,更多相关mysql SSL证书登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

MySQL 相关文章推荐
MySQL 使用索引扫描进行排序
Jun 20 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
详解MySQL的主键查询为什么这么快
Apr 03 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
mysql中关键词exists的用法实例详解
Jun 10 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
MySQL索引失效场景及解决方案
Jul 23 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
MySQL约束超详解
Sep 04 #MySQL
MySQL中的隐藏列的具体查看
Sep 04 #MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 #MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 #MySQL
MySQL8.0的WITH查询详情
Aug 30 #MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 #MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 #MySQL
You might like
php.ini中文版
2006/10/09 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
Python中datetime常用时间处理方法
2015/06/15 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
法学专业自我鉴定
2014/02/05 职场文书
党风廉政承诺书
2014/03/27 职场文书
药学职务聘任书
2014/03/29 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers