Включение и просмотр общего журнала запросов
Общий журнал запросов (general query log) записывает каждое SQL-заявление, полученное от клиентов. Это бесценный инструмент для отладки и аудита, но его следует использовать временно, поскольку он может повлиять на производительность и занять значительное дисковое пространство. На этом шаге вы включите журнал, сгенерируете некоторую активность и просмотрите файл журнала.
Сначала откройте терминал на вашем рабочем столе.
Подключитесь к серверу MySQL от имени пользователя root. В этой лабораторной среде вы можете использовать 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';"
Это гарантирует, что журнал не будет продолжать расти и влиять на производительность сервера.