MySQL Proxy是MySQL官方推出的代理服務(wù)器,它可以作為一個中間層,截取和修改MySQL協(xié)議的數(shù)據(jù)流來實(shí)現(xiàn)一些功能。
使用MySQL Proxy需要先安裝相關(guān)的軟件包,然后進(jìn)行配置,接下來是一些常用的操作手冊。
1. 連接MySQL服務(wù)器 mysql-proxy --proxy-backend-addresses=127.0.0.1:3306 2. 為不同的用戶指定不同的backend function read_query(packet) if packet:byte() == proxy.COM_QUERY then local qry = packet:sub(2) if (string.match(qry,"^USE")) then local res = proxy.db:query(qry) if res and res.resultset and res.resultset[1] and res.resultset[1]['DATABASE()'] then local db = res.resultset[1]['DATABASE()'] if db then if db == "test" then proxy.queries:append(1, packet) return proxy.PROXY_SEND_QUERY elseif db == "production" then proxy.queries:append(2, packet) return proxy.PROXY_SEND_QUERY end end end end end end 3. 對查詢結(jié)果進(jìn)行操作 function read_query_result(inj) local res = assert(inj.resultset) for i,row in ipairs(res) do row['count'] = i end return res end 4. 對MySQL協(xié)議進(jìn)行截取 function read_packet(packet) if string.byte(packet) == proxy.COM_QUERY then if string.strncmp(packet, "SELECT * FROM mytable", -1) == 0 then print ("select * from mytable triggered!") -- 這里可以做進(jìn)一步的處理 end end end