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

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.mfbz.cn/a/443298.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机服务器中了locked勒索病毒怎么解密,locked勒索病毒解密流程

科技的发展带动了企业生产,越来越多的企业开始利用计算机服务器办公,为企业的生产运营提供了极大便利,但随之而来的网络安全威胁也引起了众多企业的关注。近日,云天数据恢复中心接到许多企业的求助,企业的计算机服务器…

图形库实战丨C语言扫雷小游戏(超2w字,附图片素材)

目录 效果展示 游玩链接(无需安装图形库及VS) 开发环境及准备 1.VS2022版本 2.图形库 游戏初始化 1.头文件 2.创建窗口 3.主函数框架 开始界面函数 1.初始化 1-1.设置背景颜色及字体 1-2.处理背景音乐及图片素材 1-3.处理背景图位置 2.选…

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II 24.两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成…

【UE5】创建蓝图

创建GamePlay需要的相关蓝图 在内容游览器文件夹中创建文件夹,命名为Blueprints,用来放这个项目的所有蓝图(Blueprint) 在Blueprints文件夹下新建文件夹GamePlay,用存放GamePlay相关蓝图 在Blueprints文件夹下创建文件夹Character,存放角色相关蓝图 在Ga…

idea连接远程服务器

1. 双击shift,出现如下界面 2. 远程连接 原文来自这个up主的,点击蓝色字体就可以跳转啦! 输入主机ip、用户名、密码,点击Test Connection验证,最后点击ok添加成功 有用的话记得给俺点个赞,靴靴~

学会与自己和解

最近半年来,在学习智能驾驶方面的技术,但有些文档和资料不方便分享,有一段时间没有写 写文档啦!那就写一些技术之外的东西吧,最近也一直在学心理建设,学会与自己和解 行动 唯有自己先行动起来,…

vue组件之间通信方式汇总

方式1&#xff1a;props和$emit props和$emit仅仅限制在父子组件中使用 1.props&#xff1a;父组件向子组件传递数据 1.1 代码展示 <template><div><!-- 这是父组件 --><div>父组件中的基本数据类型age的值是:{{this.age}}</div><div>…

Web Servlet

目录 1 简介2 创建Servlet项目并成功发布运行3 新加Servlet步骤4 Servlet项目练习5 Servlet运行原理6 操作 HTTP Request头的方法(部分方法示例)7 操作 HTTP Response头的方法(部分方法示例)8 两种重定向(页面跳转)方法9 Cookie9.1 Cookie工作原理9.2 cookie构成9.3 Servlet 操…

LeetCode 1976.到达目的地的方案数:单源最短路的Dijkstra算法

【LetMeFly】1976.到达目的地的方案数&#xff1a;单源最短路的Dijkstra算法 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/ 你在一个城市里&#xff0c;城市由 n 个路口组成&#xff0c;路口编号为 0 到 n - 1 &#xff…

202441读书笔记|《笠翁对韵》—— 金菡萏,玉芙蓉,酒晕微酡琼杏颊,香尘浅印玉莲双

202441读书笔记|《笠翁对韵》——金菡萏&#xff0c;玉芙蓉&#xff0c;酒晕微酡琼杏颊&#xff0c;香尘浅印玉莲双 《作家榜名著&#xff1a;笠翁对韵》作者李渔&#xff0c;霍俊明。是所有词句都有注音的一本书&#xff0c;轻松学不认识的字&#xff0c;非常朗朗上口的对偶词…

2024年如何批量下载知乎回答和知乎文章导出pdf?

如何批量下载知乎回答和知乎文章导出pdf&#xff1f;用scraper浏览器扩展 2024 年开发的第一个脚本神器 下载的所有回答html内容&#xff0c;文件名为回答日期加标题。 接着批量将html转换pdf&#xff0c;效果如图&#xff1a; 再将所有pdf合成一个pdf文件&#xff1a; 每个回…

VUE Element例子学习

参考:【前端】VueElement UI案例&#xff1a;通用后台管理系统-项目总结_vue elementui 管理系统-CSDN博客 之前参考的el-admin-web太复杂了&#xff0c;不是纯净的demo. 所以找了一圈资料&#xff0c;找到了这个博客&#xff0c;很合适&#xff0c;有例子的代码&#xff0c;…

vue中性能优化

目录 1. 编码优化 2. 源码优化 3. 打包优化 4. 利用 Vue Devtools 总结 Vue.js 作为一个强大的前端框架&#xff0c;提供了丰富的功能和工具来帮助开发者构建高效的 Web 应用。然而&#xff0c;在开发过程中&#xff0c;性能优化仍然是一个需要关注的问题。以下是对 Vue.j…

Solidity攻击合约:重入攻击与危害分析

以太坊智能合约开发中&#xff0c;重入攻击是一种常见的安全漏洞。这种攻击通常发生在合约的递归调用中&#xff0c;攻击者通过构造恶意交易&#xff0c;使得原本合约在执行过程中不断调用自身或其他合约&#xff0c;从而耗尽合约的Gas&#xff08;交易费用&#xff09;&#x…

数据结构与算法----复习Part 13 (单模式串匹配算法)

本系列是算法通关手册LeeCode的学习笔记 算法通关手册&#xff08;LeetCode&#xff09; | 算法通关手册&#xff08;LeetCode&#xff09; (itcharge.cn) 目录 一&#xff0c;朴素匹配算法&#xff08;Brute Force&#xff09; 二&#xff0c;Rabin Karp算法 三&#xff…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十二)-Multi-RTT定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

C语言字符串型常量

在C语言中&#xff0c;字符串型常量是由一系列字符组成的常量。字符串常量在C中以双引号&#xff08;"&#xff09;括起来&#xff0c;例如&#xff1a;“Hello, World!”。字符串常量在C中是不可变的&#xff0c;也就是说&#xff0c;一旦定义&#xff0c;就不能修改其内…

Python 一步一步教你用pyglet仿制鸿蒙系统里的时钟

目录 鸿蒙时钟 1. 绘制圆盘 2. 创建表类 3. 绘制刻度 4. 刻度数值 5. 添加指针 6. 转动指针 7. 联动时间 8. 时钟走动 鸿蒙时钟 本篇将用python pyglet库复刻华为手机鸿蒙系统闹钟程序的时钟&#xff0c;先在上图中抓取出时分秒针及刻度、表盘的颜色RGB值&#xff1a…

读书笔记之《理解和改变世界》:从信息知识智能的本质看AI

《理解和改变世界: 从信息到知识与智能》作者:是(法) 约瑟夫希发基思&#xff0c; 原作名: Understanding and Changing the World: From Information to Knowledge and Intelligence&#xff0c;2023年出版。 约瑟夫希发基思&#xff08;Joseph Sifakis&#xff09;&#xff…

力扣199. 二叉树的右视图(DFS,BFS)

Problem: 199. 二叉树的右视图 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 无论是DFS还是BFS我们都要思考到达二叉树的每一层&#xff08;或者每一层中的每一个节点&#xff09;时&#xff0c;我们都该如何按题目要求做出对应得处理!!!在本体中我们主要是&#x…