舔狗的故事-MySQL客户端与服务端的爱恨情仇-《从0到1-全面深刻理解MySQL系列-第六篇》

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 舔狗的故事-MySQL客户端与服务端的爱恨情仇-《从0到1-全面深刻理解MySQL系列-第六篇》

image.png

文章大纲

一、前言

二、MySQL客户端与服务端的“爱恨情仇”

🍅 2.1、MySQL的C/S(客户端/服务器)架构

🍑2.2、MySQL客户端和服务端进程

🍓2.3、泡妞大法一: TCP/IP

💅小结

🍉2.4、泡妞方法二: 共享内存

💅小结

🍊2.5、泡妞方法三: 命名管道

💅小结

三、系列文章推荐

写在最后

image.png

一、前言

大家好,我是小诚,前面四篇《从0到1-全面深刻理解MySQL》文章给大家介绍了如何安装数据库到一条SQL在服务端需要经历那些步骤才能够解析完成,相信大家对数据库也有了初步的了解,但俗话说的好"纸上谈兵不如躬行实践",前面学习的知识都是理论的知识,多少有些枯燥,只有亲自实践才知识是否掌握了知识,所以本篇就给大家介绍客户端和服务端的连接方式,实战完成客户端与服务端的连接,从客户端发送指令的操作并获取服务端响应


安利一下,最近时常会收到一些小伙伴反馈的问题,为了方便交流,所以创建了一个水友交流群,无论你工作、面试有困难想找人请教,还是生活有感悟想要找人倾诉,都可以在交流群和水友交流,群里没有大神和小白区分,只有分享者和倾听者,而且群里会时常发送一些福利,欢迎大家来一起交流,吹水,摸鱼,进步(有兴趣的私我或者留言)


《从0到1-全面深刻理解MySQL系列》系列文章会持续更新,感兴趣的小伙伴可以关注我,一起加油,一起进步!,如有帮助,不要忘记一键三联哦,ღ( ´・ᴗ・` )比心!

image.png

二、MySQL客户端与服务端的“爱恨情仇”


🍅 2.1、MySQL的C/S(客户端/服务器)架构


 说起MySQL架构,即避免不了谈到舔狗和女神之间的关系了,可以将MySQL理解为是由客户端(舔狗)和服务端(女神)两部分组成,舔狗(客户端)可以是多种体现方式,当女神(服务端)"大姨妈"来的时候舔狗(客户端)可以是红糖水(如手机APP),当女神(服务端)生气时舔狗(客户端)可以是名牌包包(如电脑软件/网页)。


 平常我们执行一条SQL的流程,就跟舔狗(客户端)想去找女神(服务端)约会一样,大概要经历以下的流程:


 1、舔狗(客户端)包装好自己的约会的信息并附带上自己的个人介绍然后就发送给女神(服务端)如:女神,我是xx,今晚7点小树林见一起谈心,约不?


 2、女神(服务端)收到舔狗(客户端)的约会请求后,仔细阅读了舔狗(客户端)发来的信息,发现竟然舔狗(客户端)把地点约到小树林,肯定是有什么企图,二话不说直接拒绝了舔狗的约会(就像客户端发送请求时填错了账号或者密码,服务器拒绝连接)。


 3、舔狗(客户端)的约会被女神拒绝后,整天郁郁寡欢,同宿舍的基友看到了给它出了一个建议,让它将约会地点改成某五星级酒店,这样女神一定会答应它的约会,舔狗听后大喜,但是它没有那么多钱,思来想去,最后它走进的男科医院卖了一颗肾换到了5千块钱,舔狗一瘸一拐的从男科医院走出,少了一颗肾的它明显感觉身体不如之前,但一想到晚上就能够和女神一起约会,舔狗脸上绽开了菊花般的微笑。


 4、舔狗(客户端)重新包装了自己的约会信息,然后再次向女神(服务端)发起约会请求,女神看到舔狗的约会地点竟然是豪华的五星级酒店,二话不说就同意了约会(就像客户端发送请求时填写了正确的账号或者密码,服务器接受连接)


 5、舔狗看到女神接受了它的约会请求(建立了连接),非常开心,不断的发送消息给女神(执行SQL),女神服务器也时不时的给舔狗进行回复…


🍑2.2、MySQL客户端和服务端进程


 在现代计算机中,一个计算机可以运行多个程序,每个运行着的程序在计算机中我们称之为一个进程。MySQL的客户端/服务端架构本质上就是两个进程。


 每个进程在一台电脑上都有一个唯一的表示叫做进程ID,英文名称叫PID,这个进程ID是由电脑进行随机分配的,如果进程销毁了,这个ID也会被收回,下次再运行的时候,系统又会重新分配一个PID给进程,确保同一台机器上,某个时间内这个PID是唯一的。


 进程的名称是由程序的设计来定的,MySQL服务端的进程名默认是:mysqld,MySQL客户端的进程名默认是:mysql。


 通俗的理解,女神(服务端)为了显得自己比较有International,给自己起了个英文名叫:mysqld,舔狗(客户端)看到女神有这么好听的名字,为了引入女神的注意,也给自己起了给英文名叫:mysql。


 进程间通信(IPC,InterProcess Communication): 是指在不同进程之间传播或交换信息。


 IPC的方式通常有管道(包括匿名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。



🍓2.3、泡妞大法一: TCP/IP


 自从上次舔狗(客户端)成功约到女神(客户端)后,舔狗(客户端)别提多开心了,恨不得时刻和女神粘在一起,但是,舔狗(客户端)也知道,如果每次都直接和女神说要约她,次数多了女神肯定会厌倦,而且自己只有两颗肾,不可能每次想约女神的时候都去卖肾,这样女神没到手自己人没了,于是它想出了一个方法,每次想要约女神的时候,不直接就表明自己的目的,而是先用小号去试探女神,等到时机成熟了再亮明自己的身份,大概步骤如下:


 👶舔狗(客户端): 切换到小号1,给女神发送消息:“在吗?”,来试探女神(服务端)是否有空,如果女神回复了,说明女神有空,则再进行第二步,如果没有,则重复发送。


 👶舔狗(客户端): “在的,怎么了?”,舔狗的刚发出消息不久便收到女神(服务端)的回复,看到消息后,舔狗很开心,它知道计划的第一步已经成功,于是它开始了第二步,又给女神发送一则消息: “听说,今晚《爱的供养》电影首映,刚舍友抢到两张票(无中生友…),但是临时有事去不了就把票给我了,我一个人也用不了两张票,剩下的一张票不知道干嘛了”,舔狗知道女神最喜欢杨幂了,这不电影上映她一定会去看的,女神看到消息后一定会马上给他回复的。


 👩女神(服务端): 果不其然,女神看到这个消息马上就给舔狗(客户端)回复: “其实我超喜欢杨幂的,不知道剩下的一张票能不能给我呢?”,女神发出后就在静静等待舔狗(客户端)的答复。


 👶舔狗(客户端): 舔狗看到女神的回复后,脸上绽开了菊花般的微笑,但是他清楚,不能表现的太积极,于是故作镇定隔了几分钟后给女神回复: “好呀,那今晚校门口见咯。”


 👶舔狗(客户端): 终于舔狗通过自己的方式成功约到了女神,看完电影舔狗心情愉悦,高兴的买了一袋"橘子"给舍友。


 舔狗(客户端)又成功的约到了(连接)女神(服务端),舍友都感到非常惊讶,纷纷向他请教,于是他将自己约女神的方法写成了一本书分享给宿舍的单身狗看,书名叫做:《泡妞大法一之-三次"试探"》。据说,卡恩与瑟夫后来的提出的TCP、IP协议和TCP协议中建立连接的"三次挥手"机制就是受到这本书籍的影响。


 下面来通过图片来看看舔狗是如何约到女神的吧:

image.png

💅小结


 TCP/IP方式连接MySQL服务端程序格式: mysql -h 主机地址 -P 端口号(MySQL默认是3306) -u 用户名 -p 回车(然后输入密码)。


 在真实的业务场景中,我们的应用程序和实际的数据库一般是部署在不同的服务器中的,它们之间要创建连接,就必须通过网络进行。在公网的网络环境下,每台计算机都有唯一的IP地址,MySQL通过TCP/IP网络体系结构采用:IP地址 + 端口号的方式实现和网络中其他的主机进程进行通信。


 小贴士: TCP/IP网络体系结构是现在互联网中最常用的一种体系结构,它是一个协议簇,TCP/IP协议包括TCP、IP、UDP、ICMP等协议组成,而不是单纯的指TCP协议和IP协议,因为TCP和IP两种协议在这个体系结构中占据着非常重要的作用,故以此命名。



🍉2.4、泡妞方法二: 共享内存


  舔狗(客户端)发现使用TCP/IP方式和女神(服务端)发起在前几次发起约会请求都是屡试不爽,但是,渐渐地,女神又开始不搭理他了,他知道使用同一种方式久了女神已经厌倦了,于是他和女神的闺蜜多方打听,最终发现女神有一个特殊的习惯,就是每天早上4点钟会去晨跑,晨跑完后她会去一家早餐店吃早餐,这个习惯是雷打不动,女神坚持了两年。


 舔狗知道自己的机会又来了,于是他每天3点半就起床,然后去到操场等待女神来晨跑,装作"偶遇"的样子,这样就有和女神单独相处的机会了,果不其然,女神看到舔狗后觉的非常惊讶竟然有人和自己有相同的习惯,于是非常有兴致的和舔狗聊了起来,晨跑完后还跟舔狗一起吃了早餐。


 甜蜜的时间总是短暂的,跟女神吃完早餐后就回到了宿舍,因为舔狗平常很少锻炼的原因,3点半起床和跑步是个非常大的挑战,他感觉身体都快要散架了,但躺在床上回忆起了今天和女神相处的点滴,他觉的是值得的,他拿起笔记本,总结了今天的经验,笔记名叫:《泡妞大法二之-创建两人共享空间》


 下面来通过步骤和图片来看看舔狗是如何通过"共享内存"约到女神的吧:


 🐤1、MySQL服务器程序启动时指定–shared-memory参数支持共享内存方式。


 🐹2、客户端连接时指定–protocol=memory参数来显式的指定使⽤共享内存进⾏通信。

image.png

💅小结


 共享内存实际上就是允许多个进程共享一块存储空间,任何一个进程对这个空间进行了修改,其他的进程都察觉到,使用这种方式的通信,避免了数据在程序之间的复制流程,数据直接写入到内存,减少了拷贝的次数,提高了通信的速度,所以共享内存也被称作IPC中最快的一种通信方式。


 共享内存的生命周期是和内核一样的,即使所有访问共享内存的进程都完成了,共享内存的区域对象仍然还是存在的(除非进行显示删除),在内核进行重新加载引导之前,对该共享内存区域对象的任何改写操作都将一直保留。


 但是,共享内存中没有任何同步或者互斥的机制,多个进程可以同时对共享内存进行修改操作这样就可能导致数据安全问题,所以为了保证共享内存区域的数据安全,可以使用信号量的方式来实现对共享内存的同步访问机制。



🍊2.5、泡妞方法三: 命名管道


 正所谓"人间不如意事十之八九",舔狗刚想出使用"共享内存"的方式和女神建立专有的私有空间,但没想到女神没过几天就生病了,没办法继续晨跑,舔狗非常想见女神了解具体的情况,但是联系女神有不回消息,又没法到女神宿舍去,思来想去,最后他想到了一个好的方法,那就是重金收买女神的闺蜜,让闺蜜帮她和女神建立专属的连接。


 心动不如心动,舔狗立马去医院将自己剩下的一个肾也卖了,得到了5千块,他将3千块给了女神的闺蜜,请求她帮忙让自己和女神建立"交流通道",每天都将自己的小纸条带给女神,就这样,舔狗日复一日的让女神闺蜜传递着小纸条给女神,等到了第二个月,终于收到了女神的回复,内容如下: “谢谢你在我生病的这段时间一直关心我,你真是个好人。”

image.png

虽然字数不多,但舔狗依然很开心,自己的付出终于收到了回报,于是他又拿起了笔记本,记录了自己这段时间和女神的"约会心得",笔名为:《泡妞大法三之-专属通道》


 下面来通过步骤和图片来看看舔狗是如何通过"命名管道"约到女神的吧:


 🐤1、MySQL服务器程序启动时指定–enable-named-pipe参数支持命名管道方式。


 🐹2、客户端连接时指定–protocol=pipe参数来显式的指定使⽤共享内存进⾏通信。

image.png

💅小结


 命名管道也被称为FIFO文件,它是一种特殊类型的文件,在创建的时候给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。FIFO(first input first output)是遵循先进先出的原则,即第一个进来的数据会第一个被读走。

image.png

三、系列文章推荐


 《从0到1-全面深刻理解MySQL系列》



写在最后


 在最后,我们还不知道故事中舔狗的结局会如何,但是我们能够在过程中看到舔狗为了约到女神做出的努力。这不是正如现实中挣扎在生活和工作中的我们吗?虽然艰难,但依然在坚持,致敬在生活中每个平凡的我们!


  坚持用故事讲知识,如果觉得文章对你有帮助,不要忘记扫码关注和一键三连哦,你的支持是我创作更加优质文章的动力。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
|
网络协议 关系型数据库 MySQL
1.4 启动MySQL客户端程序
1.4 启动MySQL客户端程序
78 0
|
关系型数据库 MySQL 数据库
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
974 0
|
6月前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
357 1
|
2月前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
3月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
32 2
|
3月前
|
存储 分布式计算 DataWorks
DataWorks产品使用合集之在本地客户端一直无法连接ADB MySQL,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——概述-MySQL的安装、启动与停止和客户端连接、关系型数据库(RDBMS)、数据模型
MySQL数据库——概述-MySQL的安装、启动与停止和客户端连接、关系型数据库(RDBMS)、数据模型
61 0
|
6月前
|
SQL 关系型数据库 MySQL
⑩⑨【Tool】MySQL常用客户端管理工具:mysql、mysqladmin、mysqlbinlog、mysqlshow、mysqldump、mysqlimport、source
⑩⑨【Tool】MySQL常用客户端管理工具:mysql、mysqladmin、mysqlbinlog、mysqlshow、mysqldump、mysqlimport、source
86 0
|
6月前
|
存储 缓存 关系型数据库
MySQL处理客户端请求
可以提高系统性能,但是也因此需要维护这块缓存而造成一些开销。比如每次都要去查询缓存中检索、请求处理完后需要更新查询缓存等。从MySQL5.7开始不推荐使用查询缓存,在MySQL8.0中查询缓存被删除。