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