mysql-proxy read_auth方法中 替换用户名和密码

本文讨论了在MySQL Proxy版本更新后遇到的server_capabilities未设置错误,并提供了修改代码以适应新API的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql-proxy 中的read_auth方法可以实现 将客户端发送来的用户名和密码替换成真正的用户名和密码  ,比如  reaplace / me 替换成 root /root。最主要的部分是调用to_response_packet方法生成一个数据包发送给数据库进行验证。 
   在mysql-proxy 0.8.3 前的版本 写法如下 
 
Java代码:  
  1. proxy.queries:append(1,  
  2.                     proto.to_response_packet({  
  3.                             username = "root",   
  4.                             response = password.scramble(s.scramble_buffer, password.hash("secret"))  
  5.                     })  
  6.             )  
  7.   
  8.             return proxy.PROXY_SEND_QUERY   
在mysql-0.8.3版本的api中增加了server_capabilities属性,上面的程序会报以下错误信息: 
 
Java代码:  
  1. .server_capabilities has to be set  
需要改写成以下形式: 
Java代码: 
  1. local protocol_41_default_capabilities = 8+51232768  
  2.                         --8 +     -- _CONNECT_WITH_DB  
  3.                         --512 +   -- _PROTOCOL_41  
  4.                         --32768   -- _SECURE_CONNECTION  
 
Java代码:  
  1. proxy.queries:append(1,  
  2.                         proto.to_response_packet({  
  3.                                 username = "root",  
  4.                                 response = password.scramble(scramble_buffer, password.hash("root")),  
  5.                                 server_capabilities=protocol_41_default_capabilities  
  6.                         })  
  7.                 )  
被这个问题困扰了三四天,终于解决了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值