世界观点:与世界分享我刚编的mysql http隧道工具-hersql原理与使用
原文地址:https://blog.fanscore.cn/a/53/
1. 前言本文是与世界分享我刚编的转发ntunnel_mysql.php的工具的后续,之前的实现有些拉胯,这次重构了下。需求背景是为了在本地macbook上通过开源的mysql可视化客户端(dbeaver、Sequel Ace等)访问我司测试环境的mysql,整个测试环境的如图所示:
那么就有以下几种方式:
【资料图】
客户端直连mysql#Pass#测试环境mysql只提供了内网ip,只允许测试环境上的机器连接,因此不可行通过ssh隧道连接#Pass#测试环境机器倒是可以ssh上去,但是只能通过堡垒机接入,且堡垒机不允许ssh隧道,因此不可行navicat http隧道连接#Pass#测试环境有机器提供了公网ip开放了http服务,因此技术上是可行的,但navicat非开源免费软件,我司禁止使用,因此不可行测试环境选一台机器建立mysql代理转发请求#Pass#测试环境机器只开放了80端口,且已被nginx占用,因此不可行内网穿透这个想法很好,下次不要再想了既然上面的方式都不行,那怎么办呢?因此我产生了一个大胆的想法
2. 一个大胆的想法大概架构如下
首先,在本地pc上启动一个sidecar
进程,该进程监听3306
端口,实现mysql协议,将自己伪装为一个mysql server。本地pc上的mysql客户端连接到sidecar
,发送请求数据包给sidecar
,从sidecar
读取响应包。
然后在测试环境某台机器上启动transport
进程,该进程启动http服务,由nginx代理转发请求,相当于监听在80端口,然后连接到测试环境的mysql server。
sidecar
会将来自客户端的请求包通过http请求转发给transport
,transport
将请求包转发到测试环境对应的mysql server,然后读取mysql的响应数据包,然后将响应数据包返回给sidecar
,sidecar
再将响应包返回给mysql客户端。
遵循上述的基本原理,我将其实现出来: https://github.com/Orlion/hersql。但是在描述hersql
的实现细节之前我们有必要了解下mysql协议
mysql客户端与服务端交互过程主要分为两个阶段:握手阶段与命令阶段。交互流程如下:
3.1 握手阶段在最新版本中,握手过程比上面要复杂,会多几次交互
在握手阶段,3次握手建立tcp连接后服务端会首先发送一个握手初始化包,包含了
协议版本号:指示所使用的协议版本。服务器版本:指示MySQL服务器版本的字符串。连接ID:在当前连接中唯一标识客户端的整数。随机数据:包含一个随机字符串,用于后续的身份验证。服务器支持的特性标志:指示服务器支持的客户端功能的位掩码。字符集:指示服务器使用的默认字符集。默认的身份验证插件名(低版本没有该数据)随后客户端会发送一个登录认证包,包含了:
协议版本号:指示所使用的协议版本。用户名:用于身份验证的用户名。加密密码:客户端使用服务端返回的随机数对密码进行加密数据库名称:连接后要使用的数据库名称。客户端标志:客户端支持的功能的位掩码。最大数据包大小:客户端希望接收的最大数据包大小。字符集:客户端希望使用的字符集。插件名称:客户端希望使用的身份验证插件的名称。服务端收到客户端发来的登录认证包验证通过后会发送一个OK包,告知客户端连接成功,可以转入命令交互阶段
3.2 命令阶段在mysql 8.0默认的身份验证插件为
caching_sha2_password
,低版本为mysql_native_password
,两者的验证交互流程有所不同个,caching_sha2_password
在缓存未命中的情况下还会多几次交互。另外如果服务端与客户端的验证插件不同的话,也是会多几次交互。
在命令阶段,客户端会发送命令请求包到服务端。数据包的第一个字节标识了当前请求的类型,常见的命令有:
COM_QUERY命令,执行SQL查询语句。COM_INIT_DB命令,连接到指定的数据库。COM_QUIT命令,关闭MySQL连接。COM_FIELD_LIST命令,列出指定表的字段列表。COM_PING命令,向MySQL服务器发送PING请求。COM_STMT_系列预处理语句命令请求响应的模式是客户端会发一个请求包,服务端会回复n(n>=0)
个响应包
最后客户端断开连接时会主动发送一个COM_QUIT
命令包通知服务端断开连接
在了解mysql协议之后我们就可以来看下hersql的数据流转过程了。
5. hersql使用上面介绍了一堆原理性的东西,那么如何使用呢?
5.1 在一台能够请求目标mysql server的机器上部署hersql transport首先你需要下载下来hersql
的源码:https://github.com/Orlion/hersql,还需要安装下golang
,这些都完成后你就可以启动hersql transport
了。但是先别着急,我先解释下transport
的配置文件tranport.example.yaml
:
server: # transport http服务监听的地址 addr: :8080log: # 标准输出的日志的日志级别 stdout_level: debug # 文件日志的日志级别 level: error # 文件日志的文件地址 filename: ./storage/transport.log # 日志文件的最大大小(以MB为单位), 默认为 100MB。日志文件超过此大小会创建个新文件继续写入 maxsize: 100 # maxage 是根据文件名中编码的时间戳保留旧日志文件的最大天数。 maxage: 168 # maxbackups 是要保留的旧日志文件的最大数量。默认是保留所有旧日志文件。 maxbackups: 3 # 是否应使用 gzip 压缩旋转的日志文件。默认是不执行压缩。 compress: false
你可以根据你的需求修改配置,然后就可以启动transport
了
$ go run cmd/transport/main.go -conf=transport.example.yaml
5.2 在你本地机器部署启动hersql sidecar一般情况下都是会先编译为可执行文件,由systemd之类的工具托管transport进程,保证transport存活。这里简单期间直接用go run起来
同样的,你需要下载下来hersql
的源码:https://github.com/Orlion/hersql,提前安装好golang
。修改下sidecar
的配置文件sidecar.example.yaml
:
server: # sidecar 监听的地址,之后mysql client会连接这个地址 addr: 127.0.0.1:3306 # transport http server的地址 transport_addr: http://x.x.x.x:xxxxlog: # 与transport配置相同
就可以启动sidecar
了
$ go run cmd/sidecar/main.go -conf=sidecar.example.yaml
5.3 客户端连接同样的,一般情况下也都是会先编译为可执行文件,mac上是launchctl之类的工具托管sidecar进程,保证sidecar存活。这里简单期间直接用go run起来
上面的步骤都执行完成后,就可以打开mysql客户端使用了。数据库地址和端口号需要填写sidecar
配置文件中的addr
地址,sidercar
不会校验用户名和密码,因此用户名密码可以随意填写
重点来了: 数据库名必须要填写,且必须要按照以下格式填写
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]
举个例子:
root:123456@tcp(10.10.123.123:3306)/BlogDB
如图所示:
5.4 举个例子目标mysql服务器
地址:10.10.123.123:3306数据库:BlogDB用户名:root密码:123456可以直连目标mysql服务器的机器
地址:10.10.123.100开放端口:8080那么transport
可以配置为
server: addr: :8080
sidecar
可以配置为
server: addr: 127.0.0.1:3306 transport_addr: http://10.10.123.100:8080
客户端连接配置
服务器地址:127.0.0.1端口: 3306数据库名root:123456@tcp(10.10.123.123:3306)/BlogDB
6. 参考资料MySQL协议分析MySQL: Client/Server Protocol
标签:
- 乐事薯片推出迷你洗手指机配备Type-C接口可以反复充电 限量5台只送不卖
- 深圳2至3岁幼儿托管纳入学前教育管理 将于9月1日起施行
- 纸浆期货是否有效对冲废黄板纸现货价格波动风险?
- 理文、山鹰发布停机函 包装纸市场涨价100-200元/吨
- 全部合格!广东珠海抽查5批次油墨产品
- 浆系纸种再掀新一轮提价 涨幅达200-1500元/吨
- 保定满城区开展纸制品行业专项检查 规范纸制品企业生产
- 2022年3月14日全国各地区纸厂废纸价格信息
- 包装材料、人工费等成本上升 台湾生活用纸涨价
- 上周木浆系纸品价格均有提涨 箱板纸价小幅下跌
- 景兴纸业2021年营收同比增27.70% 净利同比增41.51%
- 1-2月全国快递业务收入1574.3亿 同比增长13.8%
- 原料成本压力持续上升 浙江多家包装厂产品价格上涨3%
- 3月7日-13日生活用纸主要区域市场周度价格情况
- 安徽出台“十四五”大气污染防治规划
- 原材料/燃料价格上涨 日本卫生纸、纸尿裤提价超10%
- 新加坡超市将对塑料袋收费 至少5分新币/个
- 电子商务兴起 印度纸类包装行业发展趋势
- 2022年1-2月芬兰木材交易同比下滑20%
- 山东造纸行业深入实施“链长制”工作推进机制
- 包装原料价格波动再成热点 揭秘2021造纸上市企业业绩
- 国家统计局:1-2月规上工业增加值同比实际增长7.5%
- 2022年3月18日各地区各大纸厂废纸价格信息
- 江苏开展精准造林绿化 深入推进国土绿化和全民义务植树
- 正隆纸业员工返岗率超95% 预计今年营收同比增10%
- 芬林芬宝劳马新锯材厂将启用自动装载生产线
- 山东一小镇发展纸箱包装生产企业近百家 年产值11亿元
- 打破性别“玻璃天花板” 95岁女院士是“她力量”最佳代言
- 河北辛集市暂停举办体育活动 关闭景区文娱场所
- 红色文物·党史故事 “推出胜利”的小推车
- 侵华日军南京大屠杀遇难同胞纪念馆闭馆
- 核酸采样:一位“点长”的50小时冲刺
- 跑道结冰 哈尔滨机场关闭至9日12时
- 北京地铁全面开启车内加热装置
- 黑河市多举措保障疫情期间残疾人等特殊群体生活稳定
- 北京丰台海淀两处管控区域解封 社区工作者收到“暖心礼物”
- 吉林四平一旅游项目违占耕地两千多亩 投资达10亿元
- 湖南双峰27名非法滞留缅北人员被惩戒:小孩回原籍入学
- 江西新增本土“1+6” 上饶增一中风险地区
- 江西上饶一地调整为中风险地区 实行封闭管理措施
- 快递旺季遭遇雨雪天气 国家邮政局呼吁理解快递小哥
- 高压、孤独,胆大、心细:手执焊枪的水下“蛙人”
- 掏粪掏了36年,他还在琢磨“新门道”
- 内蒙古:二连浩特市新增1例本土确诊病例 额济纳旗累计治愈出院本土确诊病例76例
- 坚守在海拔4300多米的“天路保健医生”
- 38年后,他终于知道了家在哪儿……
- 受降雪影响 辽宁鞍山一农贸市场发生坍塌
- 中国舞蹈家协会顶尖教师巡回课堂(重庆站)举办
- 边城战“疫”:夜晚七点的暂停键
- 风雪高原战“疫”长卷 寒潮下的西宁疫情防控观察
-
拟音师:“雕刻”声音的人【三百六十行】
三百六十行 拟音师:“雕刻”声音的人 闭上眼,90后赵洪泽有时甚至可以通过走路的声音,来判...
-
“双减”之后 中小学教师资格考试为何依然火爆
聚焦 “双减”之后,中小学教师资格考试为何依然火爆 近日,2021年下半年中小学教师资格考试(...
-
大数据助力贫困生成长
探索 大数据助力贫困生成长大数据画像能为贫困生成长带来什么 今年9月,云南省楚雄彝族自治州...
-
“大漠明珠”驶上发展快车道 塔里木盆地做足生态大文章
塔里木盆地做足生态大文章 “大漠明珠”驶上发展快车道 从塔里木盆地的西北角到西南角,和田...
-
职校生可报考事业单位 搬走职业教育的一块绊脚石
职校生可报考事业单位 搬走职业教育的一块绊脚石 “职业院校毕业生也可以报考事业单位了。”...
-
打算“双十一”买买买的姐妹 看完这篇再“剁手”
打算“双十一”买买买的姐妹 看完这篇再“剁手” 女性对于保养的热衷超乎想象,不少人只要是听...
-
完美“飞天”仰仗全宇宙最酷飞船试驾员
完美“飞天”仰仗全宇宙最酷飞船试驾员 11月7日,航天员翟志刚、航天员王亚平开展神舟十三号航天...
-
冠状病毒中损伤血管的蛋白首次确定
冠状病毒中损伤血管的蛋白首次确定 国际战“疫”行动 科技日报北京11月4日电 (记者刘霞)不少...
-
新电池结构让飞行汽车成为可能 相关技术将亮相北京冬奥
新电池结构让飞行汽车成为可能 相关技术将亮相北京冬奥会 科技冬奥进行时 搭载全气候电池...
-
H5N8病毒肆虐全球,我国家禽为何“独善其身”
H5N8病毒肆虐全球,我国家禽为何“独善其身” 科技日报哈尔滨11月7日电 (记者李丽云)记者11月7...
-
重庆奉节一民警因公殉职 年仅28岁
中新网重庆11月9日电 (记者 刘相琳)记者9日从重庆市公安局获悉,重庆奉节县公安局民警袁华押解一...
-
哈尔滨市新增本土新冠肺炎确诊病例1例
中新网哈尔滨11月9日电 (记者 刘锡菊)9日,哈尔滨市卫健委发布哈尔滨市11月8日0-24时疫情通报:11...
-
成都本地累计在管密接2757人、次密9097人
(抗击新冠肺炎)成都本地累计在管密接2757人、次密9097人 中新网成都11月9日电 (记者 贺劭清 ...
-
成都累计报告确诊病例23例 出现1传13特殊案例
(抗击新冠肺炎)成都累计报告确诊病例23例 出现1传13特殊案例 中新社成都11月9日电 (记者 贺劭...
-
呼和浩特一学校宿管员扇打学生致双耳鼓膜穿孔 分管校长被免
中新网呼和浩特11月9日电 (记者 张林虎)9日,针对“宿管员扇打学生致其双耳鼓膜穿孔”一事,呼和...
-
郑州通报8例确诊病例和无症状感染者活动轨迹
中新网11月9日电 据郑州市委宣传部官方微信消息,11月8日0至24时,郑州市新增阳性感染者3例,均为...
-
新疆阿克苏果农:我们的生活像苹果一样甜
中新社新疆阿克苏11月9日电 题:新疆阿克苏果农:我们的生活像苹果一样甜 作者 苟继鹏 “我...
-
河北辛集开展大规模消毒消杀工作
今天(9日)上午,河北省辛集市召开疫情防控新闻发布会。会上,辛集市科学技术局局长辛彦卜介绍,新冠...
-
河北辛集新增本土确诊11例 已转运定点医院诊治
今天(9日)上午,河北省辛集市召开疫情防控新闻发布会,辛集市副市长刘士民介绍,2021年11月8日0时至...
-
石家庄深泽县第五轮全员核酸检测结果全部为阴性
11月9日,石家庄市召开第12场新冠肺炎疫情防控工作新闻发布会。发布会上,石家庄市深泽县县长郝英鹏...
-
海口市1例治愈后的境外输入病例复阳 已转至定点医院隔离医学观察
中新网海口11月8日电 (记者 张茜翼)海口市新型冠状病毒感染肺炎疫情防控工作指挥部8日通报称,11...
-
四川新增本土确诊病例4例
中新网11月8日电 据四川省卫健委网站消息,11月7日0-24时,四川新增新型冠状病毒肺炎确诊病例5例(...
-
黑龙江省新增新冠肺炎本土确诊病例6例
中新网哈尔滨11月8日电 (程岩 记者 史轶夫)黑龙江省卫健委8日发布消息,7日0-24时,黑龙江省黑河...
-
河南新增本土确诊病例18例 其中郑州市16例周口市2例
中新网11月8日电 据河南省卫健委官方微博消息,11月7日0—24时,河南省新增本土确诊病例18例(郑州...
-
河北新增确诊病例8例 新增无症状感染者1例
中新网11月8日电 据河北省卫健委网站消息,2021年11月7日0—24时,河北省新增新型冠状病毒肺炎确诊...
-
寒潮持续发威!南方气温纷纷触底 强降雪中心转移至东北
中国天气网讯 今天(11月8日),寒潮继续南下,持续发威,南方大部最高气温将纷纷触底。强降雪中心将...
-
雪后寒!今日北京晴天回归北风劲吹 最高气温5℃上下
中国天气网讯 今天(11月8日)北京晴天回归,但在风寒效应下,“冷”仍然是天气的主题。气温方面,今...
-
黑龙江新增本土确诊病例6例 均在黑河市爱辉区
中新网11月8日电 据黑龙江省卫健委网站消息,2021年11月7日0-24时,黑龙江省新增新冠肺炎本土确诊...
-
寒潮继续影响华东华南等地 东北地区等地有强降雪
中新网11月8日电 据中央气象台网站消息,受寒潮影响,预计11月8日08时至9日08时,黄淮东部、江淮东...
-
辽宁新增本土确诊病例20例 新增本土无症状感染者12例
中新网11月8日电 据辽宁省卫健委网站消息,11月7日0时至24时,辽宁省新增20例本土新冠肺炎确诊病例...
-
寒潮影响“加码”:吉林力保电力供应 停课停运范围加大
中新网长春11月9日电 (记者 郭佳 张瑶)连日来,一轮寒潮引发的强降雪席卷中国北方。位于东北地区...
-
常州连续一周无新增病例 10日全市各类学校将错峰复学
中新网常州11月9日电 (记者 唐娟)11月9日,常州疫情防控指挥部学校防控组对外发布,自11月10起,...
-
哈尔滨机场开放恢复运行 计划航班45架次
中新网哈尔滨11月9日电 (仇建 记者 史轶夫)9日12时22分,随着哈尔滨经阜阳飞往三亚的FU6685航班...
-
山西警方抓获6名“摸金校尉” 缴获“虎枕”等大量文物
中新网长治11月9日电 (记者 李庭耀)记者9日从山西省长治市公安局上党分局获悉,上党警方侦破系列...
-
西藏基层第一书记话产业发展推进乡村振兴
中新网日喀则11月9日电(记者 赵朗)近日,由西藏自治区网信办主办的第一书记话小康活动先后走进山南...
-
内蒙古通辽:强降雪致8个旗县区受灾
中新网通辽11月9日电 (记者 张林虎)9日,记者从内蒙古自治区通辽市应急管理局获悉,自11月5日起,...
-
成都金堂:医护人取消婚礼坚守岗位 手捧花被送到了战“疫”一线
中新网成都11月9日电 (邹立杨)连日来,华西医院金堂县第一人民医院实验医学科的主检验师易维佳都在...
-
江西铅山新一轮核酸检测结果均为阴性
(抗击新冠肺炎)江西铅山新一轮核酸检测结果均为阴性 中新网南昌11月9日电 (记者 吴鹏泉)江西省...
-
辽宁大连幼儿园和中小学学生即日起暂缓入校
中新网11月9日电 据辽宁省大连市人民政府新闻办公室官方微博消息,大连市新冠肺炎疫情防控总指挥部...
-
2021年北京市重点碳排放单位:涉及多家印刷包装企业
3月15日,北京市生态环境局、北京市统计局发布了《关于公布2021年度北京市重点碳排放单位 及一般报告单...
-
北京新增1例本土确诊病例
中新网11月8日电 据北京卫健委官方微博消息,11月7日0时至24时,北京新增1例本土确诊病例,无新增...
-
河北石家庄深泽县7日新增1例无症状感染者 为8岁男童
中新网11月8日电 据石家庄卫健委官方微信消息,石家庄深泽县应对新冠肺炎疫情工作领导小组办公室8...
-
高速封闭、机场关闭、学校停课 辽宁多部门发应急预案应对极端天气
中新网沈阳11月8日电 (李晛 王景巍)7日在寒潮影响下,东北地区局地降大雪。辽宁省气象部门当日连...
-
云南新增本土确诊病例3例 新增本土无症状感染者3例
中新网11月8日电 据云南省卫健委网站消息,11月7日0—24时,云南省新增确诊病例9例,其中境外输入...
-
努力让每个人都有出彩机会
努力让每个人都有出彩机会 “孩子明年要参加中考,成绩一直提不上去,送他读职高,也是一种选择...
-
参与和见证中国水电发展
参与和见证中国水电发展 余吉安的童年是在马来西亚加里曼丹岛的沙捞越州古晋市度过的。家门口的...
-
中国航天:为实现中国梦提供战略支撑
中国航天:为实现中国梦提供战略支撑(科技名家笔谈) 今年是中国共产党成立100周年,也是中国航...
-
8日起 江西铅山县开展新一轮全员核酸检测
记者从江西省铅山县疫情防控指挥部了解到,按照疫情防控要求,为了充分保障公众的健康安全,现定于1...
-
适当“早教”可以,“早早教”大可不必
一家之言 适当“早教”可以,“早早教”大可不必 以前国庆节是放假了,可家家都有娃,放假补...
X 关闭
X 关闭