2009-12-30 4 views
0

특정 테이블이 업데이트 될 때마다 기록되는 mysql 트리거가 있습니다.MySQL 트리거 : 어떤 스크립트를 호출했는지 아는 방법?

PHP 스크립트가 트리거 한 로그를 기록하는 방법이 있습니까? (당연히 각 PHP 스크립트를 수정하지 않고도 내 목적을 무효로 할 것입니다.)

또한, 트리거 한 UPDATE 바로 전에 SQL 문을 로깅하는 방법이 있습니까?

감사

나단

+0

로그 파일을 조사하여 어떤 종류의 쿼리가 서버에 "날아가고 있는지"확인하십시오. –

답변

0

아니요,하지만 좀 더 구체적인 방향을 얻을 수 있습니다.

먼저 연결을 사용하는 경우 연결을 해제하십시오. 이렇게하면 로그를 더 쉽게 사용할 수 있습니다.

초, 동일한 데이터베이스에 액세스하는 코드베이스가 여러 개있는 것처럼 들리므로 정확히 동일한 권한으로 각 코드베이스마다 다른 사용자를 만들고 각 사용자가 다른 사용자로 로그인하도록하십시오. 이제 로그를 보면 어떤 애플리케이션이 무엇을하는지 볼 수 있습니다.

세 번째로 쿼리 로그가 있으면 트리거를 트리거 한 UPDATE가 트리거를 일으킨 UPDATE가됩니다.

네 번째로, 앱이 mysql 연결에 대해 캡슐화를 사용하는 경우 쿼리를 데이터베이스에 파일로 전송할 때 호출 스택을 작성하도록 수정해야합니다.

1

짧은 답변 : 전혀없고. 죄송합니다.

달성하려는 목표는 무엇입니까? 아마도 또 다른 방법이있을 것입니다 ....

+0

지속적인 SQL 주입 공격을 조사하려고합니다. 다양한 프로그래밍 언어를 사용하여 많은 파일에 많은 코드가 있습니다. 나는 어디서 볼지에 대한 힌트를 얻고 싶었습니다. –

+0

나는 이것이 웹 어플리케이션이라고 가정합니다. 웹 액세스 로그를 검사하려고하면 문제를 추적 할 수있는 모든 정보가 있어야합니다. 나에게도 개인 이메일을 보낼 수 있습니다 - [email protected] 하루 종일 (흰색 모자) 몇 군데 사이트를 해킹 했으므로 그 방법으로 문제를 찾을 수 있습니다. –

0

몇 가지 답변과 의견을 읽었습니다. 쿼리가 단일 지점을 통과하는 경우에만 유용한 아이디어가있었습니다. 예를 들어, 모든 쿼리가 실행되는 데이터베이스 클래스가있는 경우.

이 경우 쿼리 자체에 설명을 추가 할 수 있습니다. 주석에는 함수 호출 추적이 포함되며 SQL 주석으로 조회에 추가됩니다.

다음으로 쿼리 로깅을 설정하면 로그 파일에서 각 쿼리가 호출되는 위치를 볼 수 있습니다.

쿼리가 단일 지점을 통과하지 않으면 운이 좋지 않을 수 있습니다.

하나의 마지막 제안은 MySQL Proxy을 살펴 보는 것입니다. 나는 그것을 많이 사용하지는 않았지만 쿼리의 중간 처리를하도록 설계되었습니다. 그러나 추가 정보를 전달하려면 PHP 스크립트를 수정해야한다고 생각합니다.

+0

불행히도 우리는 SQL을 다루기 위해 하나의 클래스를 사용하지 않습니다. 우리의 오래된 코드베이스는 기본적으로 필요할 때마다 가장 기본적인 mysql_query() 호출이다. –