返回顶部
首页 > 资讯 > 数据库 >MYSQL 连接登录过程分析
  • 847
分享到

MYSQL 连接登录过程分析

2024-04-02 19:04:59 847人浏览 独家记忆
摘要

  Mysql 连接登录过程分析 在较新mysql版本中,默认没有开启线程池的功能,每个客户连接在服务器进程中都拥有自己的线程。 当客户端(应用)连接到M

 

Mysql 连接登录过程分析

在较新mysql版本中,默认没有开启线程池的功能,每个客户连接在服务器进程中都拥有自己的线程

MYSQL 连接登录过程分析

当客户端(应用)连接到Mysql服务器时,服务器要对其进行认证(Authenticate),认证方式基于用户名、原始主机信息和口令。

登录 mysql 可以通过 Unix Sockettcp 两种方式登陆,

Unix socket 是实现进程间通信的一种方式, mysql 支持利用 Unix socket 来实现客户端 - 服务端的通信,但要求客户端和服务端在同一台机器上。对于 unix socket 而言,同样也是一种套接字,监听线程会同时监听 TCP socket 和 Unix socket ,接受到请求然后处理,后续的处理逻辑都是一致的,只不过底层通信方式不一样罢了。此处具体分析 TCP 的方式。


具体过程,里面会涉及 client 与 server 的交互,并通过 tcpdump 抓包来展现这一过程。

MYSQL 连接握手过程

MYSQL 的远程登录连接是基于 TCP 的 3 次握手机制, TCP 连接建立成功后, mysql 客户端与 mysql 服务端开始进行通讯,进行 mysql 认证过程。

(1)   服务端首先会发一个握手包到客户端,

(2)   然后客户端向服务端发送认证信息 ( 用户名,密码等 ) ,

(3)   服务端收到认证包后,会检查用户名与密码是否合法,并发送包告知客户端认证信息。如果合法,则登陆成功,否则,登陆失败。连接报错。

tcpdump  过程    

xx.xxx.7.102 代表客户端,

xx.xxx.7.104 代表服务器端,

3306 是服务器的监听端口号。

(1). 在客户端上打开 tcpdump 命令,监听与 xx.xxx.7.104   3306 端口的通信网络包,命令如下:


tcpdump -S -nn -tttt -i bond0 host xx.xxx.7.104 and port 3306 and tcp -c 100

-nn 不进行端口名称的转换。

-tttt 在每一行中输出由date处理的默认格式的时间戳。

-i bond0 指定监听的网络接口

 host xx.xxx.7.104 and port 3306  监听xx.xxx.7.104 的3306端口的网络包

-c 100 表示监听100包就结束

 


此处使用以下命令生成cap文件使用wireshark软件查看,可以看到更详细的信息,包括数据包内容。

tcpdump     -i   bond0   host xx.xxx.7.104 and port 3306 -w  /tmp/1.cap --生成cap文件

 

(2). 在客户端上,利用 mysql 命令远程连接服务端 xx.xxx.7.104 ,


mysql –hxx.xxx.7.104 –P3306 –uxxx –pxxx

登陆成功后,然后直接执行 exit ,退出

(3) 分析 tcpdump 抓取的网络包,如下:

数据包标记解析

S=SYN   发起连接标志,一般用于建立 TCP 连接

P=PUSH 传送数据标志,一般用于传输数据

F=FIN   关闭连接标志,一般用于关闭 TCP 连接

ack     表示应答包

RST= RESET  异常关闭连接

. 表示没有任何标志

MYSQL 连接登录过程分析

1 部分是 TCP 连接建立的 3 次握手过程 :

102 (客户端)向 104 (服务端)发起连接 ------ 》

104 (服务端)向 102 (客户端)发起连接和应答包 ----- 》

102 (客户端)向 104 (服务端)发起应答 ----- 》

TCP 建立连接。

  MYSQL 连接登录过程分析

2 部分是 MYSQL 认证的过程 :

MYSQL 连接登录过程分析

第 4 、 5 步是服务端向客户端发送服务端的一些信息,从包内容可以看出,包含 version, 字符集等。。

MYSQL 连接登录过程分析

真正的登录请求是从第 6 步开始:

102 (客户端)向 104 (服务端)发起登录认证请求,用户是 root------>

104 (服务端)首先在 tcp 返回应答包 , 表示 tcp 连接存在 ------ 》

接着, 104 (服务端)认证通过,返回 OK------->

登录成功

在第 6 步发送的数据包,包含了用户密码这些信息的报文。

  MYSQL 连接登录过程分析

3 部分是登陆成功后,发送基本元数据信息的过程,

102 (客户端)向 104 (服务端)发起查询请求 -------- 》

104 (服务端)向 102 (客户端)返回信息 -------- 》

102 (客户端)返回应答包 -------- 》

查询完成。

  MYSQL 连接登录过程分析

4 部分是断开连接的过程

  MYSQL 连接登录过程分析

MYSQL 监听及连接线程

MYSQL 监听基于 TCP 协议 ,在服务器的 3306 端口, MySQL 服务反复监听是否有客户端发过来的请求:

MYSQL 连接登录过程分析

当新的连接成功后,连接会话是在数据库中创建一个新的前台线程。

MYSQL 连接登录过程分析

该前台线程在数据库中有自己的 id, 同时对应到 os 层面存在相应的线程号,该线程是在 mysqld 进程下。

  MYSQL 连接登录过程分析

 

 



您可能感兴趣的文档:

--结束END--

本文标题: MYSQL 连接登录过程分析

本文链接: https://lsjlt.com/news/45796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MYSQL 连接登录过程分析
      MYSQL 连接登录过程分析 在较新MYSQL版本中,默认没有开启线程池的功能,每个客户连接在服务器进程中都拥有自己的线程。 当客户端(应用)连接到M...
    99+
    2024-04-02
  • java怎么连接mysql登录界面
    要连接MySQL数据库并实现登录界面,你可以按照以下步骤进行操作:1. 首先,你需要下载并安装MySQL JDBC驱动程序,以便Ja...
    99+
    2023-10-20
    java mysql
  • discuz X3登录流程分析
    discuz X3登录流程分析公司最近要将discuz论坛升级至最新版discuz X3。但是公司要用自己的通行证同步登陆。故必须要知道discuzX3的登录流程及原理,才能进行二次开发。一、涉及到的文件discuzX3/source/te...
    99+
    2023-01-31
    流程 discuz
  • mysql登录数据库连接的方法
    这篇文章主要介绍了mysql登录数据库连接的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql登录数据库连接的方法:首先打开Workb...
    99+
    2024-04-02
  • javascript连接mysql与php通过odbc连接任意数据库的示例分析
    这篇文章主要介绍了javascript连接mysql与php通过odbc连接任意数据库的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下...
    99+
    2024-04-02
  • ftp怎么登录连接
    这篇文章主要介绍“ftp怎么登录连接”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ftp怎么登录连接”文章能帮助大家解决问题。ftp登录连接的方法:首先右键需要连接的ftp站点,在其中查看“ip地址...
    99+
    2023-07-02
  • 详解Redis开启远程登录连接
    今天使用jedis客户端api连接远程连接redis的时候,一直报错,如下: redis.clients.jedis.exceptions.JedisConnectionException: java....
    99+
    2022-06-04
    详解 远程登录 Redis
  • PLSQLDeveloper登录远程连接Oracle的操作
    远程连接oracle 只用PLSQLDeveloper客户端,不配置tnsnames.ora文件 在PL/SQL中填写: 1.UserName:用户名,如hr 2.Password:...
    99+
    2024-04-02
  • 连接虚拟机 模拟远程登录
      Virtual Box安装 省略 Virtual Box导入OVA文件 1.全局设定     2.修改框住的路径,最好不要在C盘   3 取消检查更新 4.导入虚拟电脑 5.等待加载完成;加载完成后 OVA文件导入成功   ...
    99+
    2023-01-30
    虚拟机 远程登录
  • mysql连接慢的示例分析
    小编给大家分享一下mysql连接慢的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个同事今天反应公司的mysql机器反...
    99+
    2024-04-02
  • 微信用户访问小程序登录过程的示例分析
    这篇文章主要为大家展示了“微信用户访问小程序登录过程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信用户访问小程序登录过程的示例分析”这篇文章吧。概...
    99+
    2024-04-02
  • JavaScript逆向分析instagram登入过程
    目录一、流程分析二、逆向分析三、模拟请求一、流程分析 分析发现密码加密,且发送POST请求时header必须携带x-csrftoken,否则是报403。 而x-csrftoken是...
    99+
    2024-04-02
  • Python接单的过程记录分享
    一、需求介绍 该需求主要是分析彩票的历史数据,彩票的名称为: 1、极速飞艇 链接:https://www.dsn665.com/view/jisuft/pk10kai_history...
    99+
    2024-04-02
  • MySQL的查询过程分析
    关系型数据库管理系统查询处理一般分为4个阶段: 见下图 怎么验证这几个阶段对应在MySQL的关系呢? 这里实验的数据库版本:5.6.16-64.2-56 OS:CentOS release 6.5 Ker...
    99+
    2024-04-02
  • MySQL与客户机的连接过程
    这篇文章主要讲解了“MySQL与客户机的连接过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL与客户机的连接过程”吧!建立和中止与服务器的连接1、...
    99+
    2024-04-02
  • Spring连接Mysql数据库全过程
    目录Spring连接Mysql数据库创建一个Maven项目导入坐标托管DataSource类测试Spring和Mysql数据库的连接及测试--Jdbc创建Maven Web 的jav...
    99+
    2022-11-21
    Spring连接Mysql Spring连接Mysql数据库 连接Mysql数据库
  • websphere与mysql连接的示例分析
    这篇文章给大家分享的是有关websphere与mysql连接的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 我是jb9+websphere...
    99+
    2024-04-02
  • MySql连接查询的示例分析
    这篇文章主要介绍了MySql连接查询的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySql连接查询精解 出于对知识的总...
    99+
    2024-04-02
  • Navicat连接MySQL错误描述分析
    目录环境虚拟机版本MySQL版本前期准备查看MySQL运行状态修改root密码进入MySQL交互式环境查看所有库切换库新建用户相关本地使用Navicat连接 错误描述 2013-L...
    99+
    2024-04-02
  • 如何解析Socket和TCP连接过程
    如何解析Socket和TCP连接过程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一. 背景1.完整的套接字格式{protocol,src_addr,src_p...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作