【MySQL】MySQL 的 SSL 连接以及连接信息查看

news2025/6/19 3:22:34

MySQL 的 SSL 连接以及连接信息查看

在上篇文章中,我们学习过 MySQL 的两种连接方式,回忆一下,使用 -h 会走 TCP 连接,不使用 -h 可以使用另两种方式来走 UnixSocket 连接。我们就接着这个话题再聊点别的,首先要纠正一下之前讲的,-h 不一定全是走 TCP 连接。然后我们顺着这个话题,再看一下 MySQL 中如何指定使用安全连接的问题。在学习这两个问题中,我们还将接触到一个查看当前连接状态的命令。

再谈连接方式

上回我们已经讲过有两种连接方式,在讲问题之前,我们先了解一个 MySQL 命令工具,它就是 \s 命令(全称是 status ,你也可以使用 \status 或者 status; 来查看)。

➜  ~ mysql -hlocalhost -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.17 Homebrew

Copyright (c) 2000, 2019, 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.


mysql> \s
--------------
mysql  Ver 8.0.17 for osx10.14 on x86_64 (Homebrew)

Connection id:  11
Current database:
Current user:  root@localhost
SSL:   Not in use
Current pager:  less
Using outfile:  ''
Using delimiter: ;
Server version:  8.0.17 Homebrew
Protocol version: 10
Connection:  Localhost via UNIX socket
Server characterset: utf8
Db     characterset: utf8
Client characterset: utf8mb4
Conn.  characterset: utf8mb4
UNIX socket:  /tmp/mysql.sock
Uptime:   18 min 55 sec

Threads: 2  Questions: 20  Slow queries: 0  Opens: 113  Flush tables: 3  Open tables: 35  Queries per second avg: 0.017
--------------

看出来作用了吗?它可以展示我们当前的连接状态以及服务器的一些系统信息。Current user 和 Current database 就是我们上回学习的 SELECT CURRENT_USER() 和 SELECT DATABASE() 返回的内容。

SSL 的内容我们后面马上就要说,先来看一下 Connection 这个字段的内容。如果你使用的 -h 是 localhost 的话,那么它走的其实也是 UnixSocket 方式。而我们换一下,将连库语句变成 127.0.0.1 会怎么样?

➜  ~ mysql -h127.0.0.1 -uroot
# .......
# .......
mysql> \s
# .......
# .......
Connection:  127.0.0.1 via TCP/IP
# .......
# .......

看出来了吧?换成 IP 或者换成别的 hosts 指向别名,都会变成 TCP 的连接方式。但是只有 localhost 是例外的。我们可以认为,在 MySQL 的内部,对这个特殊的名称做了特别的判断,如果连接的是 localhost ,就认为这个连接客户端和 MySQL 服务器是在同一台主机的,这时就会直接以 UnixSocket 的方式连接,毕竟 UnixSocket 的性能更好。

注意,很多小伙伴有时候用 localhost 连接不上本机的数据库,问题就很有可能出现在 mysql.sock 这个文件的配置可能有误。

如果我们想强制 localhost 也使用 TCP 方式的话,应该怎么弄呢?其实还是上篇文章中提到的那个属性,可以在命令行使用,也可以配置到 my.cnf 中去。

➜  ~ mysql -hlocalhost -uroot --protocol=tcp
# .......
# .......
Connection:  localhost via TCP/IP

SSL 安全连接

SSL 是啥相信不用我多解释了吧,毕竟现在 HTTPS 都已经成标配了,都是一样的使用 OpenSSL 来进行安全加密传输的。而且在 MySQL 中,对于远程的 TCP 连接,默认就是走这种 SSL 加密传输的。不信上面的 \s 命令输出的内容中就有。

➜  ~ mysql -hlocalhost -uroot --protocol=tcp
# .......
SSL:   Cipher in use is TLS_AES_256_GCM_SHA384
# .......
Connection:  localhost via TCP/IP

注意,如果是 UnixSocket 模式下,SSL 这个属性的内容永远是 Not use ,毕竟本机是没有远程传输问题的。

好吧,默认就是启用这种传输连接方式的,那么我们是不是可以关闭它呢?当然可以,我们可以在客户端连接的时候选择不用安全方式连接。

➜  ~ mysql -h192.168.56.133 -uroot --protocol=tcp --ssl-mode=disabled
# .......
SSL:   Not in use
# .......

那么它会不安全在哪里呢?我们直接用 WireShark 来抓包试试。

ed2e8ed90b5012898035bb9a07cb49f0.png

看到没有,如果是使用了非 SSL 的方式连接,那么我们通过抓包软件是可以抓到执行的 SQL 语句信息。你可以自己再尝试下使用默认的开启 SSL 连接的方式去连接远程 MySQL 服务器,看看还能不能抓到我们执行的 SQL 语句。

客户端可以指定连接的 --ssl-mode ,感觉很不安全呀,其实,我们也可以强制让所有连接都必须使用 SSL 模式,那就是修改一下服务端的 my.cnf 。

[server]
require_secure_transport=1

这时,我们再使用 --ssl-mode=disabled 去连接服务端的话,就会出现如下的错误信息。

➜  ~ mysql -h192.168.56.133 -uroot -p --ssl-mode=disabled
Enter password:
ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

既然 SSL 对我们的数据安全有非常重要的作用,而且还默认就是使用 SSL 的方式进行连接的,那么有没有什么特殊的情况是我们不需要去使用 SSL 的呢?有。

SSL 在普通的 TCP 连接的基础上增加了证书相关的验证操作,包括早年 HTTPS 都不是标配的年代,就是因为加了证书验证之后会降低系统的性能。本来我们可以处理的 QPS 是 3000 ,使用了 SSL 之后可能就会变成 2000 (参考文末第二条链接)。这个性能损耗说实话还是挺严重的。因此,如果是压力非常大的,并且没有核心机密数据的数据库,其实确实是可以使用非 SSL 连接的,能够有效提升数据的执行效率。比如说,一些统计上报型的数据,只是记录日志,然后进行汇总查询,再将结果放到其它数据库,这种记录日志上报的数据库,使用非 SSL 连接是完全可以的。

当然,不是什么特别极端的状态下,还是尽量保持默认状态吧,安全始终是首要的问题。

总结

今天的内容不知道你有没有什么收获,反正在我学习之后感觉真的是收获满满呀。一是继续深入了解到了 UnixSocket 对于 localhost 还有特殊的对待,调用本机数据库的时候没特别的要求还是直接用 localhost 性能会更好一些,因为它会走 UnixSocket ;二是发现了 SSL 相关的配置原来是可选的,可以根据我们的需要调整传输性能;三是 \s 命令非常实用。文末第二条连接的参考文档有对于 SSL 更详细的配置及解读,大家有兴趣的也可以再深入地学习一下。

参考文档:

https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_ssl

https://blog.csdn.net/weixin_35688430/article/details/107906576

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1503579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue实现高校学生党员发展管理系统项目【项目源码+论文说明】

基于springboot实现高校学生党员发展管理系统演示 摘要 随着高校学生规模的不断扩大,高校内的党员统计及发展管理工作面临较大的压力,高校信息化建设的不断优化发展也进一步促进了系统平台的应用,借助系统平台可以实现更加高效便捷的党员信息…

抓包工具获取请求信息

Charles 下载安装 下载 官方下载地址:https://www.charlesproxy.com/latest-release/download.do 下载后傻瓜式安装就好,这个官方的需要激活,可以选择绿色版或者学习版 绿色版 绿色中文版:https://soft.kxdw.com/pc/Charles.z…

STM32标准库——(21)Flash闪存

1.简介 第一个用途,对于我们这个C8T6芯片来说,它的程序存储器容量是64K,一般我们写个简单的程序,可能就只占前面的很小一部分空间,剩下的大片空余空间我们就可以加以利用,比如存储一些我们自定义的数据&…

单数码管(arduino)

1.连接方法 挨个点亮每个灯 #include <Arduino.h>int pin_list[] {4, 5, 19, 21, 22, 2, 15, 18}; int num_pins sizeof(pin_list) / sizeof(pin_list[0]); // 计算数组中的元素数量void setup() {// 设置每个引脚为输出for(int i 0; i < num_pins; i) {pinMode(p…

Synthetic Temporal Anomaly Guided End-to-End Video Anomaly Detection 论文阅读

Synthetic Temporal Anomaly Guided End-to-End Video Anomaly Detection 论文阅读 Abstract1. Introduction2. Related Work3. Methodology3.1. Architecture3.1.1 Autoencoder3.1.2 Temporal Pseudo Anomaly Synthesizer 3.2. Training3.3. Anomaly Score 4. Experiments4.1.…

详解Linux例行性工作

例行性工作&#xff08;计划任务&#xff09; 场景&#xff1a; 生活中&#xff0c;我们有太多场景需要使用到闹钟&#xff0c;比如早上7点起床&#xff0c;下午4点开会&#xff0c;晚上8点购物&#xff0c;等等。再Linux系统里&#xff0c;我们同样也有类似的需求。比如我们…

C语言学习--练习3(贪心)

目录 贪心算法 1. 两数对之间的最大乘积差 2.三角形的最大周长 3.数组拆分 4.救生艇 5.发送饼干 6.摆动数组 贪心算法 概念定义 所谓贪心&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上进行考虑&#xff0c;算法得到的是在某种…

第三百九十一回

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容&#xff0c;本章回中将介绍如何通过相机获取视频文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. …

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…

【Scrapy】京东商品数据可视化

【Scrapy】京东商品数据可视化 文章目录 【Scrapy】京东商品数据可视化  &#x1f449;引言&#x1f48e;一、爬取数据&#xff1a;1.1 scrapy爬虫库简介&#xff1a;1.2 技术实现&#xff1a;1.2.1搭建框架结构1.2.2 分析网页结构 二、数据保存&#xff1a;三、数据读取以及…

【Algorithms 4】算法(第4版)学习笔记 16 - 4.2 有向图

文章目录 前言参考目录学习笔记1&#xff1a;介绍1.1&#xff1a;有向图简介1.2&#xff1a;应用举例1.3&#xff1a;相关问题2&#xff1a;有向图 API2.1&#xff1a;有向图表示2.1.1&#xff1a;邻接表数组 Adjacency-list2.1.2&#xff1a;Java 实现&#xff1a;邻接表数组2…

2024年k8s最新版本安装教程

k8s安装教程 1 k8s介绍2 环境搭建2.1 主机准备2.2 主机初始化2.2.1 安装wget2.2.2 更换yum源2.2.3 常用软件安装2.2.4 关闭防火墙2.2.5 关闭selinux2.2.6 关闭 swap2.2.7 同步时间2.2.8 修改Linux内核参数2.2.9 配置ipvs功能 2.3 容器安装2.3.1 设置软件yum源2.3.2 安装docker软…

C# OpenVINO Yolov8-OBB 旋转目标检测

目录 效果 模型 项目 代码 下载 C# OpenVINO Yolov8-OBB 旋转目标检测 效果 模型 Model Properties ------------------------- date&#xff1a;2024-02-26T08:38:44.171849 description&#xff1a;Ultralytics YOLOv8s-obb model trained on runs/DOTAv1.0-ms.yaml …

论文的引用书写方法

前置操作 1、全选文献 2、在开始选项卡 段落功能区 选择编号功能 3、设置编号格式 [1] 论文的引用 1、光标放在需要引用论文的地方 2、选择引用选项卡 点击交叉引用 3、引用类型为编号项 引用内容为段落编号 选择需要的第几条参考文献

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&am…

数据库的筛选条件

【一】筛选过滤条件 【1】完整的查询语句 -- 查询当前表中的全部数据select * from 表名 where 筛选条件;​-- 查询当前表中的指定字段的数据select 字段名,字段名 from 表名 where 筛选条件;# 执行顺序from where select ​select 你选择的列1, 你选择的列2, ... from 查询的…

UVA191 Intersection 题解

UVA191 Intersection 题解 水紫&#xff0c;建议降蓝。 解法 求线段相交裸题&#xff0c;考虑使用向量解决。 我们把矩形的 4 4 4 个点两两相连&#xff0c;得到 6 6 6 条线段&#xff0c;如果先输入的线段和这 6 6 6 条线段都没有交点&#xff0c;则认为线段和矩形不相…

高度塌陷问题及解决

什么情况下产生 (when 父盒子没有定义高度&#xff0c;但是子元素有高度&#xff0c;希望用子盒子撑起父盒子的高度&#xff0c;但是子盒子添加了浮动属性之后&#xff0c;父盒子高度为0 <template><div class"father"><div class"son"&…

基于命名实体链接的事件抽取与知识图谱在电商领域的应用

开源项目推荐 多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口&#xff0c;功能强大&#xff0c;欢迎体验。 多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口…

代码还原之 函数

指令堆里逆向出来的代码有歧义&#xff0c;有三处返回&#xff0c;有嵌套IF语句&#xff0c;故推断出是个函数&#xff1b; #if 0/*27ec: 48 8d 3d 58 39 00 00 lea 0x3958(%rip),%rdi # 614b <_IO_stdin_usedBase0x14b> // rdi"COLUMNS"27f3: e8 e…