php一步一步实现mysql协议(一)——抓包本地mysql通信
原由
最近研究数据库中间件的时候,发现项目中连接中间件的时候和配置数据库一样。说明中间件必然实现了mysql协议,于是我就想研究研究mysql实现,并最终实现使用php来通TCP直连mysql
俗话说:“工欲善其事,必先利其器”,研究mysql协议,需要先把工具安装上。这里使用 wireshark 来抓包,安装 wireshark 很简单一直点击下一步就可以啦,但是注意在安装的时候把 npcap 安装上
然后选择 “Adapter for loopback traffic capture” 网卡
使用php连接数据库并执行脚本:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $password = '123456'; try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } $result = $dbh->query("select * from users",PDO::FETCH_ASSOC); foreach($result as $row){ var_dump($row); }
在抓取数据包界面筛选 mysql 协议,结果如图
好了到这里我们就抓取到了本机的mysql协议包数据