Spec-Zone .ru
спецификации, руководства, описания, API
|
На Unix mysql клиент регистрирует операторы, выполняемые в интерактивном
режиме к файлу истории. По умолчанию этот файл называют .mysql_history
в Вашем
корневом каталоге. Чтобы определить различный файл, установите значение MYSQL_HISTFILE
переменная окружения.
Журналирование оператора происходит следующим образом:
Операторы регистрируются только когда выполняющийся в интерактивном режиме.
Операторы являются неинтерактивными, например, когда считано из файла или канала. Также возможно
подавить журналирование оператора при использовании --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 5.6.8 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