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_
значения команды, перечисленные в xxx
mysql_com.h
заголовочный файл. Например, Create
DB
и Shutdown
соответствовать COM_CREATE_DB
и COM_SHUTDOWN
, соответственно.
<RECORD_ID>
Уникальный идентификатор для контрольной записи. Значение составляется из порядкового номера и метки
времени в формате
. Порядковый номер
инициализируется к размеру контрольного файла журнала в то время, когда контрольный плагин журнала
открывает это и постепенно увеличивается 1 для каждой зарегистрированной записи. Метка времени
является значением UTC в SEQ_TIMESTAMP
формат, указывающий время, когда
контрольный плагин журнала, открытый файл. yyyy-mm-dd
Thh:mm:ss
Пример:
<RECORD_ID>28743_2013-04-18T21:03:24</RECORD_ID>
<TIMESTAMP>
Дата и время, когда событие аудита было сгенерировано. Например, у события, соответствующего
выполнению SQL-оператора, полученного от клиента, есть a
<TIMESTAMP>
значение, происходящее после концов оператора, не, когда это
получается. У значения есть формат
(с yyyy-mm-dd
Thh: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>