【原创】MySQL Proxy - read_handshake()

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:


       握手信息是在初始连接建立后(通过 connect_server())由服务器发送到客户端的。握手信息中包含关于 MySQL 版本、用于处理连接信息的线程 ID 、客户端和服务器 IP 地址等细节信息。这些信息通过 proxy.connection 结构提供。  


proxy.connection.server.mysqld_version: MySQL 服务器版本  
proxy.connection.server.thread_id: 线程 ID  
proxy.connection.server.scramble_buffer: 存放 scramble password 的 buffer  
proxy.connection.server.dst.name: 服务器的 IP 地址  
proxy.connection.client.src.name: 客户端的 IP 地址  


       例如,你可以打印出握手数据信息,并通过 IP 地址拒绝一些客户端的连接,具体如下:  


function read_handshake( auth )
        print("<-- let's send him some information about us")
        print("    mysqld-version: " .. proxy.connection.server.mysqld_version)
        print("    thread-id     : " .. proxy.connection.server.thread_id)
        print("    scramble-buf  : " .. string.format("%q", proxy.connection.server.scramble_buffer))
        print("    server-addr   : " .. proxy.connection.server.dst.name)
        print("    client-addr   : " .. proxy.connection.client.dst.name)
        


        if not proxy.connection.client.dst.name:match("^127.0.0.1:") then
                proxy.response.type = proxy.MYSQLD_PACKET_ERR
                proxy.response.errmsg = "only local connects are allowed"


                print("we don't like this client");


                return proxy.PROXY_SEND_RESULT
        end
end


       注意到,你必须通过 proxy.PROXY_SEND_RESULT 才能返回错误包信息给客户端。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
监控 MySQL 关系型数据库
|
关系型数据库 MySQL 开发工具
|
关系型数据库 MySQL 开发工具
|
关系型数据库 MySQL 测试技术
|
关系型数据库 MySQL 测试技术