|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Контрольное содержание файла журнала не шифруется. См. Раздел 6.3.11.2, "Контрольные Соображения Безопасности Плагина Журнала".
Контрольный файл журнала пишется как XML, используя UTF-8 (до 4 байтов за символ). Корневой элемент <AUDIT>. Закрытие </AUDIT> тег корневого
элемента пишется, когда контрольный плагин журнала завершается, таким образом, тег не присутствует в файле, в то
время как плагин является активным.
Корневой элемент содержит <AUDIT_RECORD> элементы, каждый из которых содержит
другие элементы, которые предоставляют информацию о контролируемом событии.
Вот демонстрационный файл журнала, переформатированный немного для удобочитаемости:
<?xml version="1.0" encoding="UTF-8"?><AUDIT> <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:24 UTC</TIMESTAMP> <RECORD_ID>1_2013-04-17T15:03:24</RECORD_ID> <NAME>Audit</NAME> <SERVER_ID>1</SERVER_ID> <VERSION>1</VERSION> <STARTUP_OPTIONS>/usr/local/mysql/bin/mysqld --socket=/usr/local/mysql/mysql.sock --port=3306</STARTUP_OPTIONS> <OS_VERSION>x86_64-osx10.6</OS_VERSION> <MYSQL_VERSION>5.7.2-m12-log</MYSQL_VERSION> </AUDIT_RECORD> <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:40 UTC</TIMESTAMP> <RECORD_ID>2_2013-04-17T15:03:24</RECORD_ID> <NAME>Connect</NAME> <CONNECTION_ID>2</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER>root</USER> <OS_LOGIN></OS_LOGIN> <HOST>localhost</HOST> <IP>127.0.0.1</IP> <COMMAND_CLASS>connect</COMMAND_CLASS> <PRIV_USER>root</PRIV_USER> <PROXY_USER></PROXY_USER> <DB>test</DB> </AUDIT_RECORD>... <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:41 UTC</TIMESTAMP> <RECORD_ID>4_2013-04-17T15:03:24</RECORD_ID> <NAME>Query</NAME> <CONNECTION_ID>2</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER>root[root] @ localhost [127.0.0.1]</USER> <OS_LOGIN></OS_LOGIN> <HOST>localhost</HOST> <IP>127.0.0.1</IP> <COMMAND_CLASS>drop_table</COMMAND_CLASS> <SQLTEXT>DROP TABLE IF EXISTS t</SQLTEXT> </AUDIT_RECORD> <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:41 UTC</TIMESTAMP> <RECORD_ID>5_2013-04-17T15:03:24</RECORD_ID> <NAME>Query</NAME> <CONNECTION_ID>2</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER>root[root] @ localhost [127.0.0.1]</USER> <OS_LOGIN></OS_LOGIN> <HOST>localhost</HOST> <IP>127.0.0.1</IP> <COMMAND_CLASS>create_table</COMMAND_CLASS> <SQLTEXT>CREATE TABLE t (i INT)</SQLTEXT> </AUDIT_RECORD>... <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:41 UTC</TIMESTAMP> <RECORD_ID>7_2013-04-17T15:03:24</RECORD_ID> <NAME>Quit</NAME> <CONNECTION_ID>2</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER></USER> <OS_LOGIN></OS_LOGIN> <HOST></HOST> <IP></IP> <COMMAND_CLASS>connect</COMMAND_CLASS> </AUDIT_RECORD>... <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:47 UTC</TIMESTAMP> <RECORD_ID>9_2013-04-17T15:03:24</RECORD_ID> <NAME>Shutdown</NAME> <CONNECTION_ID>3</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER>root[root] @ localhost [127.0.0.1]</USER> <OS_LOGIN></OS_LOGIN> <HOST>localhost</HOST> <IP>127.0.0.1</IP> <COMMAND_CLASS></COMMAND_CLASS> </AUDIT_RECORD> <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:47 UTC</TIMESTAMP> <RECORD_ID>10_2013-04-17T15:03:24</RECORD_ID> <NAME>Quit</NAME> <CONNECTION_ID>3</CONNECTION_ID> <STATUS>0</STATUS> <STATUS_CODE>0</STATUS_CODE> <USER></USER> <OS_LOGIN></OS_LOGIN> <HOST></HOST> <IP></IP> <COMMAND_CLASS>connect</COMMAND_CLASS> </AUDIT_RECORD> <AUDIT_RECORD> <TIMESTAMP>2013-04-17T15:03:49 UTC</TIMESTAMP> <RECORD_ID>11_2013-04-17T15:03:24</RECORD_ID> <NAME>NoAudit</NAME> <SERVER_ID>1</SERVER_ID> </AUDIT_RECORD></AUDIT>
Элементы в пределах <AUDIT_RECORD> у элементов есть эти характеристики:
Некоторые элементы появляются в каждом
<AUDIT_RECORD> элемент, но многие являются дополнительными и не обязательно появляются в
каждом элементе.
Порядок элементов в пределах <AUDIT_RECORD>
элемент не гарантируется.
Значения элемента не являются фиксированной длиной. Длинные значения могут быть усеченными как обозначено в описаниях элемента, данных позже.
<, >, ", и & символы кодируются как <, >, ",
и &, соответственно. Байты NUL (U+00) кодируются как ? символ.
Символы, не допустимые как символы XML, кодируются, используя ссылки цифры. Допустимые символы XML:
#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Каждый <AUDIT_RECORD> элемент содержит ряд обязательных элементов. Другие
дополнительные элементы могут появиться, в зависимости от контрольного типа записи.
Следующие элементы обязательны в каждом <AUDIT_RECORD> элемент:
<NAME>
Строка, представляющая тип инструкции, которая генерировала событие аудита, такое как команда что сервер, полученный от клиента.
Пример:
<NAME>Query</NAME>
Некоторые распространенные <NAME> значения:
Audit When auditing starts, which may be server startup timeConnect When a client connects, also known as logging inQuery An SQL statement (executed directly)Prepare Preparation of an SQL statement; usually followed by ExecuteExecute Execution of an SQL statement; usually follows PrepareShutdown Server shutdownQuit When a client disconnectsNoAudit Auditing has been turned off
Возможные значения Audit, Binlog Dump,
Change user, Close stmt, Connect Out, Connect, Create DB, Daemon, Debug, Delayed insert, Drop DB, Execute, Fetch,
Field List, Init DB, Kill, Long Data, NoAudit,
Ping, Prepare, Processlist,
Query, Quit, Refresh, Register Slave, Reset stmt, Set option, Shutdown, Sleep, Statistics,
Table Dump, Time.
За исключением Audit и NoAudit, эти
значения соответствуют COM_ значения команды, перечисленные в xxxmysql_com.h заголовочный файл. Например, Create
DB и Shutdown соответствовать COM_CREATE_DB
и COM_SHUTDOWN, соответственно.
<RECORD_ID>
Уникальный идентификатор для контрольной записи. Значение составляется из порядкового номера и метки
времени в формате . Порядковый номер
инициализируется к размеру контрольного файла журнала в то время, когда контрольный плагин журнала
открывает это и постепенно увеличивается 1 для каждой зарегистрированной записи. Метка времени
является значением UTC в SEQ_TIMESTAMP формат, указывающий время, когда
контрольный плагин журнала, открытый файл. yyyy-mm-ddThh:mm:ss
Пример:
<RECORD_ID>28743_2013-04-18T21:03:24</RECORD_ID>
<TIMESTAMP>
Дата и время, когда событие аудита было сгенерировано. Например, у события, соответствующего
выполнению SQL-оператора, полученного от клиента, есть a
<TIMESTAMP> значение, происходящее после концов оператора, не, когда это
получается. У значения есть формат (с yyyy-mm-ddThh:mm:ss UTCT,
никакие десятичные числа). Формат включает спецификатор часового пояса в конец. В настоящий момент
часовым поясом всегда является UTC.
Пример:
<TIMESTAMP>2013-04-17T15:03:49 UTC</TIMESTAMP>
Следующие элементы являются дополнительными в <AUDIT_RECORD> элементы. Многие
из них происходят только с определенным <NAME> значения.
<COMMAND_CLASS>
Строка, которая указывает на тип выполняемого действия.
Пример:
<COMMAND_CLASS>drop_table</COMMAND_CLASS>
Значения, прибывшие от com_status_vars массив в sql/mysqld.cc
файл в исходном распределении MySQL. Они соответствуют переменным состояния, выведенным на экран
этим statment:
SHOW STATUS LIKE 'Com%';
<CONNECTION_ID>
Целое без знака, представляющее клиентский идентификатор соединения. Это - то же самое как CONNECTION_ID() значение функции в пределах сеанса.
Пример:
<CONNECTION_ID>127</CONNECTION_ID>
<DB>
Строка, представляющая имя базы данных значения по умолчанию. Этот элемент появляется только если
<NAME> значение Connect или Change user.
<HOST>
Строка, представляющая имя хоста клиента. Этот элемент появляется только если
<NAME> значение Connect, Change
user, или Query.
Пример:
<HOST>localhost</HOST>
<IP>
Строка, представляющая клиентский IP-адрес. Этот элемент появляется только если <NAME> значение Connect, Change user, или Query.
Пример:
<IP>127.0.0.1</IP>
<MYSQL_VERSION>
Строка, представляющая версию сервера MySQL. Это - то же самое как значение VERSION() функция или version системная переменная. Этот элемент появляется только если
<NAME> значение Audit.
Пример:
<MYSQL_VERSION>5.7.1-m11-log</MYSQL_VERSION>
<OS_LOGIN>
Строка, представляющая внешнего пользователя (пустой, если ни один). Значение может отличаться от
<USER> значение, например, если сервер аутентифицирует клиент,
использующий внешний метод аутентификации. Этот элемент появляется только если <NAME> значение Connect, Change user, или Query.
<OS_VERSION>
Строка, представляющая операционную систему, на которой сервер был создан или работает. Этот элемент
появляется только если <NAME> значение Audit.
Пример:
<OS_VERSION>x86_64-Linux</OS_VERSION>
<PRIV_USER>
Строка, представляющая пользователя, что сервер, аутентифицируемый клиент как. Это - имя
пользователя, которое сервер использует для проверки полномочия, и может отличаться от <USER> значение. Этот элемент появляется только если <NAME> значение Connect или Change user.
<PROXY_USER>
Строка, представляющая пользователя прокси. Значение пусто, если пользователь, проксирующий, не в
действительности. Этот элемент появляется только если <NAME>
значение Connect или Change user.
<SERVER_ID>
Целое без знака, представляющее ID сервера. Это - то же самое как значение server_id системная переменная. Этот элемент появляется только если
<NAME> значение Audit или NoAudit.
Пример:
<SERVER_ID>1</SERVER_ID>
<SQLTEXT>
Строка, представляющая текст SQL-оператора. Значение может быть пустым. Длинные значения могут быть
усеченными. Этот элемент появляется только если <NAME> значение
Query или Execute.
Строка, как контрольный файл журнала непосредственно, пишется, используя UTF-8 (до 4 байтов за символ), таким образом, значение может быть результатом преобразования. Например, исходный оператор, возможно, был получен от клиента как строка SJIS.
Пример:
<SQLTEXT>DELETE FROM t1</SQLTEXT>
<STARTUP_OPTIONS>
Строка, представляющая опции, которые были даны на командной строке или в файлах опции, когда сервер
MySQL был запущен. Этот элемент появляется только если <NAME>
значение Audit.
Пример:
<STARTUP_OPTIONS>/usr/local/mysql/bin/mysqld --port=3306 --log-output=FILE</STARTUP_OPTIONS>
<STATUS>
Целое без знака, представляющее состояние команды: 0 для успеха, ненулевого, если ошибка произошла.
Это - то же самое как значение mysql_errno()
C API-функция.
Контрольный журнал не содержит значение SQLSTATE или сообщение об ошибке. Чтобы видеть ассоциации между кодами ошибки, значения SQLSTATE, и сообщения, видят Раздел C.3, "Коды ошибки сервера и сообщения".
Предупреждения не регистрируются.
Пример:
<STATUS>1051</STATUS>
<STATUS_CODE>
Целое без знака, представляющее состояние команды: 0 для успеха, 1, если ошибка произошла.
Пример:
<STATUS_CODE>0</STATUS_CODE>
<USER>
Строка, представляющая имя пользователя, передалась клиентом. Это может отличаться от <PRIV_USER> значение. Этот элемент появляется только если <NAME> значение Connect, Change user, или Query.
Пример:
<USER>root[root] @ localhost [127.0.0.1]</USER>
<VERSION>
Целое без знака, представляющее версию контрольного формата файла журнала. Этот элемент появляется
только если <NAME> значение Audit.
Пример:
<VERSION>1</VERSION>