Spec-Zone.ru › MySQL 5.7

4.2.2.2 Использование файлов опций

Большинство программ MySQL могут читать параметры запуска из файлов опций (иногда называемых конфигурационными файлами). Файлы опций предоставляют удобный способ задания часто используемых параметров, чтобы их не нужно было вводить в командной строке каждый раз при запуске программы.

Чтобы определить, читает ли программа файлы опций, вызовите ее с параметром --help. (Для mysqld используйте --verbose и --help.) Если программа читает файлы опций, сообщение справки указывает, какие файлы она ищет и какие группы опций распознает.

Примечание

Программа MySQL, запущенная с параметром --no-defaults, не читает файлы опций, кроме .mylogin.cnf.

Многие файлы опций — это обычные текстовые файлы, созданные с помощью любого текстового редактора. Исключением является файл .mylogin.cnf, содержащий параметры пути входа в систему. Это зашифрованный файл, созданный утилитой mysql_config_editor. См. Раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL». “Путь входа в систему” — это группа опций, которая допускает только определённые параметры: host, user, password, port и socket. Клиентские программы указывают, какой путь входа в систему следует читать из .mylogin.cnf, используя параметр --login-path.

Чтобы указать имя альтернативного файла пути входа в систему, установите переменную окружения MYSQL_TEST_LOGIN_FILE. Эта переменная используется утилитой тестирования mysql-test-run.pl, а также распознается mysql_config_editor и MySQL-клиентами, такими как mysql, mysqladmin и т. д.

MySQL ищет файлы опций в порядке, описанном ниже, и читает все существующие.

Примечание

Дополнительную информацию о файлах опций, используемых с программами NDB Cluster, см. в Разделе 21.4, «Конфигурация NDB Cluster».

  • Порядок обработки файлов опций

  • Синтаксис файла опций

  • Включения файлов опций

Порядок обработки файлов опций

В Windows программы MySQL считывают параметры запуска из файлов, указанных в следующей таблице, в указанном порядке (файлы, перечисленные первыми, читаются первыми, файлы, читаемые позже, имеют приоритет).

Таблица 4.1 Файлы опций, читаемые в системах Windows

Таблица 4.1 Файлы опций, читаемые в системах Windows
Имя файла Назначение
%WINDIR%\my.ini, %WINDIR%\my.cnf Глобальные параметры
C:\my.ini, C:\my.cnf Глобальные параметры
BASEDIR\my.ini, BASEDIR\my.cnf Глобальные параметры
defaults-extra-file Файл, указанный с помощью --defaults-extra-file, если таковой имеется
%APPDATA%\MySQL\.mylogin.cnf Параметры пути входа в систему (только для клиентов)

В предыдущей таблице %WINDIR% обозначает расположение вашей директории Windows. Она обычно C:\WINDOWS. Используйте следующую команду, чтобы определить точное расположение по значению переменной среды WINDIR:

C:\> echo %WINDIR%

%APPDATA% представляет значение каталога данных приложения Windows. Используйте следующую команду, чтобы определить точное расположение по значению переменной среды APPDATA:

C:\> echo %APPDATA%

BASEDIR представляет собой базовый каталог установки MySQL. При установке MySQL 5.7 с помощью MySQL Installer, это обычно C:\PROGRAMDIR\MySQL\MySQL Server 5.7, где PROGRAMDIR представляет директорию программ (обычно Program Files для англоязычных версий Windows). См. Раздел 2.3.3, «MySQL Installer для Windows».

Важно

Несмотря на то, что MySQL Installer помещает большинство файлов в PROGRAMDIR, он устанавливает my.ini по умолчанию в директорию C:\ProgramData\MySQL\MySQL Server 5.7\.

В Unix-подобных системах программы MySQL считывают параметры запуска из файлов, указанных в следующей таблице, в указанном порядке (файлы, перечисленные первыми, читаются первыми, файлы, читаемые позже, имеют приоритет).

Примечание

В Unix-системах MySQL игнорирует конфигурационные файлы, которые могут быть записаны всеми пользователями. Это сделано преднамеренно в целях безопасности.

Таблица 4.2 Файлы опций, читаемые в Unix-подобных системах

Таблица 4.2 Файлы опций, читаемые в Unix-подобных системах
Имя файла Назначение
/etc/my.cnf Глобальные параметры
/etc/mysql/my.cnf Глобальные параметры
SYSCONFDIR/my.cnf Глобальные параметры
$MYSQL_HOME/my.cnf Параметры, специфичные для сервера (только для сервера)
defaults-extra-file Файл, указанный с помощью --defaults-extra-file, если таковой имеется
~/.my.cnf Параметры, специфичные для пользователя
~/.mylogin.cnf Параметры пути входа в систему, специфичные для пользователя (только для клиентов)

В предыдущей таблице ~ представляет домашний каталог текущего пользователя (значение переменной $HOME).

SYSCONFDIR представляет каталог, указанный с помощью параметра SYSCONFDIR для CMake при сборке MySQL. По умолчанию это каталог etc, расположенный в каталоге собранной установки.

MYSQL_HOME — это переменная окружения, содержащая путь к каталогу, в котором находится файл серверных параметров my.cnf. Если MYSQL_HOME не установлено, и вы запускаете сервер с помощью программы mysqld_safe, mysqld_safe устанавливает её в BASEDIR, базовый каталог установки MySQL.

DATADIR обычно /usr/local/mysql/data, хотя это может меняться в зависимости от платформы или метода установки. Это значение — расположение каталога данных, сгенерированное при компиляции MySQL, а не расположение, указанное с помощью параметра --datadir при запуске mysqld. Использование --datadir во время выполнения не влияет на то, где сервер ищет файлы опций, которые он считывает до обработки каких-либо параметров.

Если несколько экземпляров заданного параметра найдены, последний экземпляр имеет приоритет, за исключением одного случая: для mysqld первый экземпляр параметра --user используется как мера безопасности, чтобы предотвратить переопределение параметра пользователя, указанного в файле опций, в командной строке.

Синтаксис файла опций

Следующее описание синтаксиса файла опций относится к файлам, которые вы редактируете вручную. Это исключает .mylogin.cnf, который создаётся с помощью mysql_config_editor и зашифрован.

Любую длинную опцию, которую можно указать в командной строке при запуске программы MySQL, можно также указать в файле опций. Чтобы получить список доступных опций для программы, запустите её с опцией --help. (Для mysqld используйте --verbose и --help.)

Синтаксис указания опций в файле опций похож на синтаксис командной строки (см. Раздел 4.2.2.1, «Использование опций в командной строке»). Однако в файле опций опускаются два ведущих дефиса из имени опции, и вы указываете только одну опцию в строке. Например, --quick и --host=localhost в командной строке должны быть указаны как quick и host=localhost в отдельных строках файла опций. Для указания опции в формате --loose-opt_name в файле опций запишите её как loose-opt_name.

Пустые строки в файлах опций игнорируются. Непустые строки могут иметь любой из следующих форматов:

  • #comment, ;comment

    Строки комментариев начинаются с # или ;. Комментарий # может начинаться посередине строки.

  • [group]

    group — это имя программы или группы, для которой вы хотите установить опции. После строки группы все строки установки опций применяются к названной группе до конца файла опций или до другой строки группы. Имена групп опций не чувствительны к регистру.

  • opt_name

    Это эквивалентно --opt_name в командной строке.

  • opt_name=value

    Это эквивалентно --opt_name=value в командной строке. В файле опций вы можете размещать пробелы вокруг символа =, чего нельзя сделать в командной строке. Значение необязательно может быть заключено в одинарные или двойные кавычки, что полезно, если значение содержит символ комментария #.

Ведущие и хвостовые пробелы автоматически удаляются из имён и значений опций.

В значениях опций можно использовать escape-последовательности \b, \t, \n, \r, \\ и \s для представления символов Backspace, Tab, Newline, Carriage Return, обратной косой черты и пробела. В файлах опций эти правила escape применяются:

  • Обратная косая черта, за которой следует допустимый символ escape-последовательности, преобразуется в символ, представленный последовательностью. Например, \s преобразуется в пробел.

  • Обратная косая черта, за которой не следует допустимый символ escape-последовательности, остаётся без изменений. Например, \S сохраняется как есть.

Эти правила означают, что литерой обратной косой черты можно задать как \\, либо как \, если за ней не следует допустимый символ escape-последовательности.

Правила для escape-последовательностей в файлах опций немного отличаются от правил для escape-последовательностей в строковых литералах в SQL-запросах. В последнем контексте, если “x” не является допустимым символом escape-последовательности, \x становится “x”, а не \x. См. Раздел 9.1.1, «Строковые литералы».

Правила escape для значений файла опций особенно актуальны для имён путей Windows, которые используют \ в качестве разделителя пути. Разделитель в имени пути Windows должен быть записан как \\, если за ним следует символ escape-последовательности. Он может быть записан как \\ или \, если за ним не следует символ escape-последовательности. В альтернативном варианте, / может быть использован в именах путей Windows и обрабатывается как \. Предположим, что вы хотите указать базовый каталог C:\Program Files\MySQL\MySQL Server 5.7 в файле опций. Это можно сделать несколькими способами. Некоторые примеры:

basedir="C:\Program Files\MySQL\MySQL Server 5.7"
basedir="C:\\Program Files\\MySQL\\MySQL Server 5.7"
basedir="C:/Program Files/MySQL/MySQL Server 5.7"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.7

Если имя группы опций совпадает с именем программы, опции в группе применяются конкретно к этой программе. Например, группы [mysqld] и [mysql] применяются к серверу mysqld и программе-клиенту mysql соответственно.

Группа опций [client] считывается всеми программами-клиентами, предоставляемыми в дистрибутивах MySQL (но не mysqld). Чтобы понять, как программы-клиенты сторонних разработчиков, использующие C API, могут использовать файлы опций, см. документацию по C API по адресу .

Группа [client] позволяет задавать опции, которые применяются ко всем клиентам. Например, [client] — это подходящая группа для указания пароля для подключения к серверу. (Но убедитесь, что файл опций доступен только вам, чтобы другие люди не могли узнать ваш пароль.) Не включайте опцию в группу [client], если она не поддерживается всеми программами-клиентами, которые вы используете. Программы, которые не понимают опцию, завершаются с сообщением об ошибке при попытке их запуска.

Сначала перечислите более общие группы опций, а затем более конкретные. Например, группа [client] более общая, поскольку её читают все программы-клиенты, в то время как группа [mysqldump] читается только программой mysqldump. Опции, указанные позже, переопределяют опции, указанные ранее, поэтому размещение групп опций в порядке [client], [mysqldump] позволяет опциям, специфичным для mysqldump, переопределять опции [client].

Вот типичный глобальный файл опций:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick

Вот типичный пользовательский файл опций:

[client]
# The following password is sent to all standard MySQL clients
password="my password"

[mysql]
no-auto-rehash
connect_timeout=2

Для создания групп опций, которые будут считываться только серверами mysqld из определённых серий выпусков MySQL, используйте группы с именами [mysqld-5.6], [mysqld-5.7] и так далее. Следующая группа указывает, что настройка sql_mode должна использоваться только серверами MySQL с номерами версии 5.7.x:

[mysqld-5.7]
sql_mode=TRADITIONAL
Включение файлов параметров

Можно использовать директивы !include в файлах параметров для включения других файлов параметров и !includedir для поиска файлов параметров в определённых каталогах. Например, чтобы включить файл /home/mydir/myopt.cnf, используйте следующую директиву:

!include /home/mydir/myopt.cnf

Чтобы найти каталог /home/mydir и прочитать найденные там файлы параметров, используйте эту директиву:

!includedir /home/mydir

MySQL не гарантирует порядок чтения файлов параметров в каталоге.

Примечание

Все файлы, которые должны быть найдены и включены с помощью директивы !includedir на операционных системах Unix, должны иметь имена файлов, заканчивающиеся на .cnf. В Windows эта директива проверяет файлы с расширением .ini или .cnf.

Записывайте содержимое включённого файла параметров, как и любой другой файл параметров. То есть он должен содержать группы параметров, каждая из которых предваряется строкой [group], указывающей программу, к которой применяются параметры.

При обработке включённого файла используются только те параметры в группах, которые ищет текущая программа. Другие группы игнорируются. Предположим, что файл my.cnf содержит эту строку:

!include /home/mydir/myopt.cnf

И предположим, что /home/mydir/myopt.cnf выглядит так:

[mysqladmin]
force

[mysqld]
key_buffer_size=16M

Если my.cnf обрабатывается mysqld, используется только группа [mysqld] в файле /home/mydir/myopt.cnf. Если файл обрабатывается mysqladmin, используется только группа [mysqladmin]. Если файл обрабатывается любой другой программой, никакие параметры из /home/mydir/myopt.cnf не используются.

Директива !includedir обрабатывается аналогично, за исключением того, что все файлы параметров в указанном каталоге читаются.

Если файл параметров содержит директивы !include или !includedir, файлы, указанные этими директивами, обрабатываются при каждом обработке файла параметров, независимо от их положения в файле.

Для работы директив включения путь к файлу не должен быть указан в кавычках и не должен содержать управляющих последовательностей. Например, следующие операторы, указанные в my.ini, читают файл параметров myopts.ini:

!include C:/ProgramData/MySQL/MySQL Server/myopts.ini
!include C:\ProgramData\MySQL\MySQL Server\myopts.ini
!include C:\\ProgramData\\MySQL\\MySQL Server\\myopts.ini

В Windows, если !include /path/to/extra.ini является последней строкой в файле, убедитесь, что в конце добавлен символ новой строки, иначе строка будет проигнорирована.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/option-files.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API