2012-01-18 5 views
2

mysql-proxy를 성공적으로 설치했으며 작업 및 루아 스크립팅 방법을 이해했습니다. 하지만 저는 루아를 잘 쓰지 못합니다.내 쿼리를 mysql-proxy 또는 다른 방법으로 대체하려면 어떻게해야합니까?

내 문제는 내가 웹 호스팅에 사용하는 소프트웨어가 쿼리에서 OLD_PASSWORD ('')를 사용하여 계속 mysql 사용자를 생성한다는 것입니다. 나는 mysql-proxy가 OLD_PASSWORD ('')를 새로운 PASSWORD ('') 값으로 쉽게 대체해야한다고 생각한다.

최근에 일부 ppl이 phpmyadmin을 통해 쿼리를 대체 할 수있는 자습서를 보았습니다. 검색어를 대체 할 다른 방법이 있으면 지금 알려주세요.

아니요 : 인코딩 된 파일이거나 일부 파일이 실행되기 때문에 소프트웨어에서 쿼리를 변경할 수 없습니다.

예 질의 :

INSERT INTO mysql.user (Host, User, Password) VALUES ('localhost', 'safaf', OLD_PASSWORD('123456')) 

예상 질의 :

INSERT INTO mysql.user (Host, User, Password) VALUES ('localhost', 'safaf', PASSWORD('123456')) 

답변

1

인터넷에 일부 검색 후 나는 해결책을 찾아 냈다.

function read_query(packet) 
    if string.byte(packet) == proxy.COM_QUERY then 
    local query = string.sub(packet, 2) 
    local replacing = false 
    -- matches "OLD" as first word of the query 
    if string.match(string.upper(query), 'OLD_PASSWORD') then 
     query = string.gsub(query,'OLD_PASSWORD', 'PASSWORD') 
     replacing = true 
    end 
    if (replacing) then 
     proxy.queries:append(1, string.char(proxy.COM_QUERY) .. query) 
     return proxy.PROXY_SEND_QUERY 
    end 
    end 
end