4.2.2.5 Использование опций для установки переменных программы
Многие программы MySQL имеют внутренние переменные, которые можно установить во время выполнения, используя оператор SET. См. Раздел 13.7.4.1, «Синтаксис SET для присваивания переменных» и Раздел 5.1.8, «Использование системных переменных».
Большинство этих переменных программы также можно задать при запуске сервера, используя тот же синтаксис, что применяется для указания опций программы. Например, у mysql есть переменная max_allowed_packet, которая контролирует максимальный размер буфера обмена. Чтобы установить переменную max_allowed_packet для mysql на значение 16 МБ, используйте одну из следующих команд:
mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M
Первая команда указывает значение в байтах. Вторая команда указывает значение в мегабайтах. Для переменных, принимающих числовое значение, значение можно указать с суффиксом K, M или G (как в верхнем, так и в нижнем регистре) для указания множителя 1024, 10242 или 10243 соответственно. (Например, при использовании для установки max_allowed_packet, суффиксы обозначают единицы килобайт, мегабайт или гигабайт.)
В файле опций настройки переменных указываются без ведущих дефисов:
[mysql]
max_allowed_packet=16777216
Или:
[mysql]
max_allowed_packet=16M
Если необходимо, знаки подчеркивания в имени опции могут быть указаны как дефисы. Следующие группы опций эквивалентны. Обе устанавливают размер буфера ключей сервера на 512 МБ:
[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M
В более ранних версиях MySQL опции программы можно было указывать полностью или как любой однозначно определяемый префикс. Например, опцию --compress можно было передать mysqldump как --compr, но не как --comp, так как последнее является неоднозначным. В MySQL 5.7 префиксы опций больше не поддерживаются; принимаются только полные опции. Это связано с тем, что префиксы могут создавать проблемы при внедрении новых опций для программ, а префикс, который в настоящее время однозначен, может стать неоднозначным в будущем. Некоторые последствия этого изменения:
Опцию
--key-bufferтеперь необходимо указывать как--key-buffer-size.Опцию
--skip-grantтеперь необходимо указывать как--skip-grant-tables.
Суффиксы для указания множителя значения могут использоваться при установке переменной во время вызова программы, но не для установки значения с помощью SET во время выполнения. С другой стороны, с SET вы можете назначить значение переменной с помощью выражения, что неверно, когда вы устанавливаете переменную при запуске сервера. Например, первая из следующих строк допустима во время вызова программы, но вторая — нет:
$> mysql --max_allowed_packet=16M
$> mysql --max_allowed_packet=16*1024*1024
И наоборот, вторая из следующих строк допустима во время выполнения, но первая — нет:
mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
© 2025 Oracle
Licensed under the GPLv2 License.