【原创】MySQL Proxy - read_auth_result()

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

       在鉴权阶段由服务器返回的包可以通过 read_auth_result() 函数进行捕获分析。该函数的唯一参数是由服务器返回的鉴权包的本身。由于该包是一个裸 MySQL 网络协议包,你必须通过检查包的首字节来确认包的类型及其对应的内容。可以使用常量 MYSQLD_PACKET_ERR 和 MYSQLD_PACKET_OK 来标示当前鉴权是否成功:  


function read_auth_result(auth)
        local state = auth.packet:byte()


        if state == proxy.MYSQLD_PACKET_OK then
                print("<-- auth ok");
        elseif state == proxy.MYSQLD_PACKET_ERR then
                print("<-- auth failed");
        else
                print("<-- auth ... don't know: " .. string.format("%q", auth.packet));
        end
end



       如果一个允许使用 long-password 的客户端尝试向支持 long-password 的服务器进行鉴权,但是实际提供的用户密码确是 short 的,read_auth_result() 函数将会被调用两次。第一次,auth.packet:byte() 的值将会等于 254 ,表明客户端应该使用老版本的密码协议再尝试一次。第二次调用 read_auth_result() 函数时,auth.packet:byte() 的值将会指出鉴权是否真正成功。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
存储 数据采集 缓存
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
1519 0
|
监控 MySQL 关系型数据库
|
关系型数据库 MySQL 测试技术
|
关系型数据库 MySQL 测试技术

推荐镜像

更多