Spec-Zone.ru › MySQL 8.4

6.2.2.2 Использование файлов параметров

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

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

Примечание

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

Сервер, запущенный с отключенной системной переменной persisted_globals_load, не читает файлы mysqld-auto.cnf.

Многие файлы параметров — это обычные текстовые файлы, созданные с помощью любого текстового редактора. Исключение составляют:

  • Файл .mylogin.cnf, содержащий параметры пути входа. Это зашифрованный файл, созданный утилитой mysql_config_editor. См. Раздел 6.6.7, «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 и так далее.

  • Файл mysqld-auto.cnf в каталоге данных. Этот файл в формате JSON содержит сохранённые настройки системных переменных. Он создаётся сервером при выполнении операторов SET PERSIST или SET PERSIST_ONLY. См. Раздел 7.1.9.3, «Сохраняемые системные переменные». Управление mysqld-auto.cnf следует оставлять серверу и не выполнять вручную.

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

  • Синтаксис файла параметров

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

END_OF_DOCUMENT_MARKER
Порядок обработки файлов параметров

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

Примечание

Сведения о файлах параметров, используемых с программами NDB Cluster, см. в разделе 25.4 «Настройка NDB Cluster».

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

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

Таблица 6.1 Файлы параметров, считываемые программами MySQL на системах 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 Параметры пути входа (только клиенты)
DATADIR\mysqld-auto.cnf Системные переменные, сохранённые с помощью SET PERSIST или SET PERSIST_ONLY (только сервер)

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

C:\> echo %WINDIR%

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

C:\> echo %APPDATA%

BASEDIR представляет каталог базовой установки MySQL. Когда MySQL 8.4 устанавливается с помощью MSI, это обычно C:\PROGRAMDIR\MySQL\MySQL Server 8.4, где PROGRAMDIR представляет каталог программ (обычно Program Files для английских версий Windows).

Важно

Хотя MySQL Configurator помещает большинство файлов в PROGRAMDIR, он устанавливает my.ini по умолчанию в каталог C:\ProgramData\MySQL\MySQL Server 8.4\.

DATADIR представляет каталог данных MySQL. Как используется для поиска mysqld-auto.cnf, его значение по умолчанию — расположение каталога данных, созданного при компиляции MySQL, но может быть изменено с помощью --datadir, указанного в файле параметров или параметре командной строки, обработанном до обработки mysqld-auto.cnf.

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

Примечание

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

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

Таблица 6.2 Файлы параметров, считываемые программами MySQL в системах Unix и подобных 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 Параметры пути входа, специфичные для пользователя (только клиенты)
DATADIR/mysqld-auto.cnf Системные переменные, сохранённые с помощью SET PERSIST или SET PERSIST_ONLY (только сервер)

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

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

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

DATADIR представляет каталог данных MySQL. Как используется для поиска mysqld-auto.cnf, его значение по умолчанию — расположение каталога данных, созданного при компиляции MySQL, но может быть изменено с помощью --datadir, указанного в файле параметров или параметре командной строки, обработанном до обработки mysqld-auto.cnf.

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

Синтаксис файла параметров

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

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

Синтаксис указания параметров в файле параметров аналогичен синтаксису командной строки (см. Раздел 6.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 в командной строке. В файле параметров вы можете иметь пробелы вокруг символа =, что неверно в командной строке. Значение необязательно может быть заключено в одинарные или двойные кавычки, что полезно, если значение содержит символ комментария #.

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

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

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

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

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

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

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

basedir="C:\Program Files\MySQL\MySQL Server 8.4"
basedir="C:\\Program Files\\MySQL\\MySQL Server 8.4"
basedir="C:/Program Files/MySQL/MySQL Server 8.4"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.4

Если имя группы параметров совпадает с именем программы, параметры в группе применяются именно к этой программе. Например, группы [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=128M

[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-8.3], [mysqld-8.4] и так далее. Следующая группа указывает, что настройка sql_mode должна использоваться только серверами MySQL с номерами версии 8.4.x:

[mysqld-8.4]
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-8.4-en/option-files.html

Spec-Zone.ru

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