您的位置:首页 > 数据库 > MySQL

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

2013-03-31 19:12 260 查看
mysql-proxy 中的read_auth方法可以实现 将客户端发送来的用户名和密码替换成真正的用户名和密码 ,比如 reaplace / me 替换成 root
/root。最主要的部分是调用to_response_packet方法生成一个数据包发送给数据库进行验证。

在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

在mysql-0.8.3版本的api中增加了server_capabilities属性,上面的程序会报以下错误信息:

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

})

)

被这个问题困扰了三四天,终于解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: