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基础(一)
Apr 05 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
mysql性能优化以及配置连接参数设置
May 06 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 MySQL
MySQL 原理与优化之原数据锁的应用
Aug 14 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写入数据库类代码分享
2011/07/26 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
python实现媒体播放器功能
2018/02/11 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
详解python polyscope库的安装和例程
2020/11/13 Python
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Java程序员综合测试题
2014/04/25 面试题
语文教学感言
2014/02/06 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
先进工作者推荐材料
2014/12/23 职场文书
婚礼答谢礼品
2015/01/20 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL