4.5.1.3 mysql 로깅
Unix에서는 mysql 클라이언트는 대화식으로 실행 된 명령문을 기록 파일에 기록합니다. 기본적으로이 파일은 .mysql_history
라는 이름으로 사용자의 홈 디렉토리에 있습니다. 다른 파일을 지정하는 경우, MYSQL_HISTFILE
환경 변수 값을 설정합니다.
로깅 방법
문 로깅은 다음과 같이 이루어집니다.
문은 대화식으로 실행 된 경우에만 기록됩니다. 문은 예를 들어 파일 또는 파이프에서 읽을 경우 인터랙티브가 없습니다.
--batch
옵션 또는--execute
옵션을 사용하여 문 로깅을 억제 할 수 있습니다.문은 "ignore"목록의 패턴 중 하나와 일치하는 경우는 무시되고 기록되지 않습니다. 이 목록은 나중에 설명합니다.
mysql은 무시되지 않고 비어 있지 않은 각 문 행을 개별적으로 기록합니다.
무시되지 않는 문이 여러 줄에 걸쳐 있으면 (끝 구분자를 포함하지 않는다), mysql 행을 연결하여 완전한 성명을 형성하고 줄 바꿈 공간에 매핑 결과에 구분 기호를 덧붙여 기록 합니다.
그 결과 여러 줄에 걸쳐 입력 문이 두 번 기록 될 수 있습니다. 다음의 입력에 대해 생각합니다.
mysql>SELECT
->'Today is'
->,
->CONCAT()
->;
이 경우 mysql은 "SELECT", " 'Today is' '', ''CONCAT ()"및 ";"의 각 줄을 읽고하면서 기록합니다. 또한 SELECT\n'Today is'\n,\nCURDATE()
을 SELECT 'Today is' , CURDATE()
에 매핑 한 후 구분 기호를 추가 한 완전한 성명도 기록합니다. 따라서 기록되는 출력에는 다음 줄이 있습니다.
SELECT 'Today is' , CURDATE () ; SELECT 'Today is', CURDATE ();
MySQL 5.6.8에서는 mysql은 로깅을 위해 "ignore"목록에있는 패턴과 일치하는 문을 무시합니다. 기본적으로 패턴의 목록은 "*IDENTIFIED*:*PASSWORD*"
에서 암호를 참조하는 명령문을 무시합니다. 패턴 매칭은 대소 문자를 구분하지 않습니다. 패턴에서 특수 문자가 2 개 있습니다.
?
는 단일 문자와 일치합니다.*
는 0 개 이상의 문자를 임의의 순서와 일치합니다.
추가 패턴을 지정하려면 --histignore
옵션을 사용하거나 MYSQL_HISTIGNORE
환경 변수를 설정합니다. (모두 지정한 경우 옵션 값이 우선됩니다.) 값은 콜론 하나 이상의 패턴 목록에서 기본 패턴 목록에 추가됩니다.
명령 행에서 지정된 패턴. 명령 인터프리터에서 특별한 취급을받는 것을 방지하기 위해 따옴표로 묶거나 이스케이프 처리를해야 할 경우가 있습니다. 예를 들어, 암호를 참조하는 명령문 이외에 UPDATE
문 및 DELETE
문 로깅을하지 않으려면 mysql을 다음과 같이 호출합니다.
shell> mysql --histignore="*UPDATE*:*DELETE*"
기록 파일 제어
.mysql_history
파일에 암호를 포함하는 SQL 문 텍스트와 같은 민감한 정보가 기록 될 수 있기 때문에 제한된 액세스 모드에서 보호하도록하십시오. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오.
기록 파일을 유지하지 않는 경우 .mysql_history
이 존재하면 먼저 그것을 삭제합니다. 다음 방법 중 하나를 사용하여 다시 생성되지 않도록합니다.
MYSQL_HISTFILE
환경 변수를/dev/null
로 설정합니다. 로그인 할 때마다이 설정이 적용되도록하려면이 쉘 시작 파일에 놓습니다..mysql_history
을/dev/null
에 대한 심볼릭 링크로 만듭니다. 이것은 한 번만 실행하면됩니다.shell>
ln -s /dev/null $HOME/.mysql_history