Spec-Zone.ru › MySQL 5.7

4.5.1.3 Ведение журнала клиента mysql

Клиент mysql может выполнять такие типы ведения журнала для выполняемых интерактивно операторов:

  • В Unix, клиент mysql записывает операторы в файл истории. По умолчанию этот файл имеет имя .mysql_history в вашей домашней директории. Для указания другого файла задайте значение переменной среды MYSQL_HISTFILE.

  • На всех платформах, если задан параметр --syslog, клиент mysql записывает операторы в системную службу ведения журнала. В Unix это syslog; в Windows это журнал событий Windows. Место назначения, куда выводятся сообщения журнала, зависит от системы. В Linux место назначения часто является файлом /var/log/messages.

Следующее обсуждение описывает характеристики, применимые ко всем типам ведения журнала, и предоставляет информацию, специфичную для каждого типа ведения журнала.

  • Как происходит ведение журнала

  • Управление файлом истории

  • Характеристики ведения журнала syslog

Как происходит ведение журнала

Для каждого включенного места назначения ведения журнала, ведение журнала операторов происходит следующим образом:

  • Операторы записываются в журнал только при интерактивном выполнении. Операторы неинтерактивны, например, когда они читаются из файла или канала. Также возможно подавить ведение журнала операторов, используя параметр --batch или --execute.

  • Операторы игнорируются и не записываются в журнал, если они соответствуют любому шаблону в списке “ignore”. Этот список описан позже.

  • Клиент mysql записывает каждый неигнорируемый, непустой оператор строку по строке.

  • Если неигнорируемый оператор занимает несколько строк (не включая разделитель окончания), клиент mysql конкатенирует строки, чтобы сформировать полный оператор, отображает переводы строк на пробелы и записывает результат, плюс разделитель.

Следовательно, входной оператор, занимающий несколько строк, может быть записан в журнал дважды. Рассмотрим этот ввод:

mysql> SELECT
    -> 'Today is'
    -> ,
    -> CURDATE()
    -> ;

В этом случае, клиент mysql записывает строки “SELECT”, “'Today is'”, “,”, “CURDATE()” и “;” по мере их чтения. Он также записывает полный оператор после отображения SELECT\n'Today is'\n,\nCURDATE() на SELECT 'Today is' , CURDATE(), плюс разделитель. Таким образом, эти строки появляются в выводе журнала:

SELECT
'Today is'
,
CURDATE()
;
SELECT 'Today is' , CURDATE();

Клиент mysql игнорирует для целей ведения журнала операторы, соответствующие любому шаблону в списке “ignore”. По умолчанию список шаблонов — "*IDENTIFIED*:*PASSWORD*", для игнорирования операторов, которые ссылаются на пароли. Сопоставление шаблонов нечувствительно к регистру. В шаблонах два символа являются специальными:

  • ? соответствует любому одиночному символу.

  • * соответствует любой последовательности нуля или более символов.

Для указания дополнительных шаблонов используйте параметр --histignore или задайте переменную среды MYSQL_HISTIGNORE. (Если оба указаны, значение параметра имеет приоритет.) Значение должно быть списком одного или нескольких разделенных двоеточием шаблонов, которые добавляются к списку шаблонов по умолчанию.

Шаблоны, указанные в командной строке, могут потребовать цитирования или экранирования, чтобы предотвратить их специальную обработку интерпретатором команд. Например, чтобы подавить ведение журнала для операторов UPDATE и DELETE в дополнение к операторам, которые ссылаются на пароли, вызовите mysql так:

mysql --histignore="*UPDATE*:*DELETE*"
Управление файлом истории

Файл .mysql_history следует защищать с ограниченным режимом доступа, поскольку в него может быть записана конфиденциальная информация, например, текст SQL-операторов, содержащих пароли. См. Раздел 6.1.2.1, «Руководство для конечных пользователей по безопасности паролей». Операторы в файле доступны из клиента mysql при использовании клавиши вверх для вызова истории. См. Отключение интерактивной истории.

Если вы не хотите хранить файл истории, сначала удалите .mysql_history, если он существует. Затем используйте любой из следующих методов, чтобы предотвратить его повторное создание:

  • Установите переменную среды MYSQL_HISTFILE на значение /dev/null. Чтобы это значение применялось каждый раз при входе, поместите его в один из файлов запуска вашей оболочки.

  • Создайте .mysql_history как символическую ссылку на /dev/null; это нужно сделать только один раз:

    ln -s /dev/null $HOME/.mysql_history
    
Характеристики ведения журнала syslog

Если задан параметр --syslog, mysql записывает интерактивные операторы в системную службу ведения журнала. Ведение журнала сообщений имеет следующие характеристики.

Ведение журнала происходит на уровне “information”. Это соответствует приоритету LOG_INFO для syslog в Unix/Linux syslog и EVENTLOG_INFORMATION_TYPE для журнала событий Windows. Обратитесь к документации вашей системы для настройки вашей службы ведения журнала.

Размер сообщения ограничен 1024 байтами.

Сообщения состоят из идентификатора MysqlClient, за которым следуют эти значения:

  • SYSTEM_USER

    Имя пользователя операционной системы (логин) или --, если пользователь неизвестен.

  • MYSQL_USER

    Имя пользователя MySQL (указано с параметром --user) или --, если пользователь неизвестен.

  • CONNECTION_ID:

    Идентификатор подключения клиента. Это то же самое, что и значение функции CONNECTION_ID() в рамках сеанса.

  • DB_SERVER

    Хост сервера или --, если хост неизвестен.

  • DB

    База данных по умолчанию или --, если база данных не выбрана.

  • QUERY

    Текст записанного в журнал оператора.

Вот пример вывода, сгенерированного в Linux с использованием --syslog. Этот вывод отформатирован для читабельности; каждое сообщение журнала фактически занимает одну строку.

Mar  7 12:39:25 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'
Mar  7 12:39:28 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-logging.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API