mysql-proxy read_auth方法中替換用戶名和密碼 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 }) ) 被這個問題困擾了三四天,終於解決了。