일반 쿼리 로그 활성화 및 검토
일반 쿼리 로그는 클라이언트로부터 수신된 모든 SQL 문을 기록합니다. 디버깅 및 감사에 매우 유용한 도구이지만, 성능에 영향을 미치고 상당한 디스크 공간을 소비할 수 있으므로 임시로 사용해야 합니다. 이 단계에서는 로그를 활성화하고, 몇 가지 활동을 생성한 다음, 로그 파일을 검토할 것입니다.
먼저 데스크톱에서 터미널을 엽니다.
root 사용자로 MySQL 서버에 연결합니다. 이 랩 환경에서는 sudo를 사용하여 비밀번호 없이 연결할 수 있습니다.
sudo mysql -u root
mysql> 프롬프트가 나타나면 일반 쿼리 로그를 전역적으로 활성화합니다.
SET GLOBAL general_log = 'ON';
기본적으로 로그 파일은 MySQL 데이터 디렉토리에 저장됩니다. 더 쉽게 접근하기 위해 위치를 /tmp 디렉토리로 변경해 보겠습니다.
SET GLOBAL general_log_file = '/tmp/mysql_general.log';
다음 명령을 실행하여 새 위치를 확인할 수 있습니다.
SHOW VARIABLES LIKE 'general_log_file';
출력은 방금 설정한 경로를 확인해야 합니다.
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| general_log_file | /tmp/mysql_general.log |
+------------------+-------------------------+
1 row in set (0.01 sec)
이제 몇 가지 명령을 실행하여 로그 항목을 생성합니다.
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
SELECT 'Logging this query' AS message;
이 명령들을 실행한 후 MySQL 쉘을 종료합니다.
exit
터미널로 돌아와서 로그 파일의 내용을 확인합니다.
sudo cat /tmp/mysql_general.log
실행한 명령과 함께 연결 정보 및 타임스탬프가 표시됩니다. 이는 일반 쿼리 로그가 올바르게 작동하고 있음을 확인시켜 줍니다.
/usr/sbin/mariadbd, Version: 10.6.18-MariaDB-0ubuntu0.22.04.1 (Ubuntu 22.04). started with:
Tcp port: 3306 Unix socket: /run/mysqld/mysqld.sock
Time Id Command Argument
250728 14:12:46 33 Query SHOW VARIABLES LIKE 'general_log_file'
250728 14:12:50 33 Query CREATE DATABASE IF NOT EXISTS testdb
33 Query SELECT DATABASE()
33 Init DB testdb
33 Query show databases
33 Query show tables
33 Query SELECT 'Logging this query' AS message
250728 14:12:56 33 Quit
마지막으로, 작업이 끝나면 로그를 비활성화하는 것이 좋습니다. 터미널에서 직접 수행할 수 있습니다.
sudo mysql -u root -e "SET GLOBAL general_log = 'OFF';"
이렇게 하면 로그가 계속 증가하여 서버 성능에 영향을 미치는 것을 방지할 수 있습니다.