Spec-Zone .ru
спецификации, руководства, описания, API
|
mysql клиент может сделать эти типы журналирования для операторов, выполняемых в интерактивном режиме:
На Unix mysql пишет операторы в файл истории. По умолчанию этот
файл называют .mysql_history
в Вашем корневом каталоге. Чтобы определить
различный файл, установите значение MYSQL_HISTFILE
переменная окружения.
На всех платформах, если --syslog
опция дается, mysql пишет операторы в системное средство
журналирования. На Unix это syslog
; на Windows это - Windows Event Log.
Место назначения, где зарегистрированные сообщения появляются, системно-зависимо. На Linux место
назначения часто /var/log/messages
файл.
Следующее обсуждение описывает характеристики, которые применяются ко всем типам журналирования, и предоставляет информацию, определенную для каждого типа журналирования.
Поскольку каждый позволял регистрировать место назначения, журналирование оператора происходит следующим образом:
Операторы регистрируются только когда выполняющийся в интерактивном режиме.
Операторы являются неинтерактивными, например, когда считано из файла или канала. Также возможно
подавить журналирование оператора при использовании --batch
или --execute
опция.
Операторы игнорируются и не регистрируются, если они соответствуют какой-либо образец в "проигнорировать" списке. Этот список описывается позже.
mysql регистрирует каждую непроигнорированную, непустую строку оператора индивидуально.
Если непроигнорированный оператор охватывает многократные строки (не включая завершающийся разделитель), mysql связывает строки, чтобы сформировать полный оператор, отображает новые строки на пробелы, и регистрирует результат плюс разделитель.
Следовательно, входной оператор, который охватывает многократные строки, может быть зарегистрирован дважды. Рассмотрите этот ввод:
mysql>SELECT
->'Today is'
->,
->CONCAT()
->;
В этом случае mysql
регистрирует "ИЗБРАННОЕ", "'Сегодня is'",",",
"CONCAT ()", и";" строки, поскольку это читает их. Это также регистрирует полный
оператор после отображения SELECT\n'Today is'\n,\nCURDATE()
к SELECT 'Today is' , CURDATE()
, плюс разделитель. Таким образом эти строки
появляются в зарегистрированном выводе:
SELECT'Today is',CURDATE();SELECT 'Today is' , CURDATE();
mysql игнорирует для того, чтобы зарегистрировать операторы
целей, которые соответствуют любой образец в "проигнорировать" списке. По умолчанию список образца "*IDENTIFIED*:*PASSWORD*"
, проигнорировать операторы, которые
обращаются к паролям. Сопоставление с образцом не является чувствительным к регистру. В пределах образцов два
символа являются особенными:
?
соответствия любой единственный символ.
*
соответствия любая последовательность нуля или
большего количества символов.
Чтобы определить дополнительные образцы, используйте --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
syslog
Журналирование Характеристик Если --syslog
опция дается, mysql пишет интерактивные операторы в системное средство
журналирования. У журналирования сообщения есть следующие характеристики.
Журналирование происходит на "информационном"
уровне. Это соответствует LOG_INFO
приоритет для syslog
на Unix/Linux syslog
возможность и к EVENTLOG_INFORMATION_TYPE
для Windows Event Log. Консультируйтесь со своей
системной документацией для конфигурации Вашей возможности журналирования.
Размер сообщения ограничивается 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;'