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следует оставлять серверу и не выполнять вручную.
Порядок обработки файлов параметров
MySQL ищет файлы параметров в порядке, описанном ниже, и читает все существующие файлы. Если нужный вам файл параметров отсутствует, создайте его с помощью соответствующего метода, как обсуждалось ранее.
Сведения о файлах параметров, используемых с программами NDB Cluster, см. в разделе 25.4 «Настройка NDB Cluster».
В Windows программы MySQL считывают параметры запуска из файлов, представленных в следующей таблице, в указанном порядке (файлы, перечисленные первыми, читаются первыми, файлы, читаемые позже, имеют приоритет).
Таблица 6.1 Файлы параметров, считываемые программами MySQL в системах Windows
| Имя файла | Назначение |
|---|---|
,
| Глобальные параметры |
C:\my.ini, C:\my.cnf
| Глобальные параметры |
,
| Глобальные параметры |
defaults-extra-file | Файл, указанный с помощью --defaults-extra-file, если таковой имеется |
| Параметры пути входа (только для клиентов) |
| Системные переменные, сохраненные с помощью SET
PERSIST или SET
PERSIST_ONLY (только для сервера) |
В предыдущей таблице %WINDIR% представляет местоположение вашей директории Windows. Это обычно C:\WINDOWS. Используйте следующую команду для определения точного местоположения из значения переменной среды WINDIR:
C:\> echo %WINDIR%
%APPDATA% представляет значение каталога данных приложения Windows. Используйте следующую команду для определения точного местоположения из значения переменной среды APPDATA:
C:\> echo %APPDATA%
BASEDIR представляет базовый каталог установки MySQL. При установке MySQL 9.2 с помощью MSI, это обычно C:\, где PROGRAMDIR\MySQL\MySQL
Server 9.2PROGRAMDIR представляет каталог программ (обычно Program Files для русскоязычных версий Windows).
Хотя MySQL Configurator размещает большинство файлов в PROGRAMDIR, он устанавливает my.ini по умолчанию в каталог C:\ProgramData\MySQL\MySQL Server
9.2\.
DATADIR представляет каталог данных MySQL. Используемый для поиска mysqld-auto.cnf, его значение по умолчанию — это расположение каталога данных, созданное во время компиляции MySQL, но может быть изменено с помощью --datadir, указанного в качестве параметра файла или командной строки, обработанного до обработки mysqld-auto.cnf.
В Unix-подобных системах программы MySQL считывают параметры запуска из файлов, представленных в следующей таблице, в указанном порядке (файлы, перечисленные первыми, читаются первыми, файлы, читаемые позже, имеют приоритет).
В Unix-системах MySQL игнорирует файлы конфигурации, имеющие разрешение на запись для всех. Это сделано для безопасности.
Таблица 6.2 Файлы параметров, считываемые программами MySQL в Unix-подобных системах
| Имя файла | Назначение |
|---|---|
/etc/my.cnf | Глобальные параметры |
/etc/mysql/my.cnf | Глобальные параметры |
| Глобальные параметры |
$MYSQL_HOME/my.cnf | Параметры, специфичные для сервера (только для сервера) |
defaults-extra-file | Файл, указанный с помощью --defaults-extra-file, если таковой имеется |
~/.my.cnf | Параметры, специфичные для пользователя |
~/.mylogin.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_nameloose-.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-последовательности, преобразуется в символ, представленный этой последовательностью. Например,
\sпреобразуется в пробел.Обратный слэш, за которым не следует допустимый символ escape-последовательности, остаётся без изменений. Например,
\Sсохраняется как есть.
Эти правила означают, что буквальный обратный слэш может быть задан как \\ или как \, если за ним не следует допустимый символ escape-последовательности.
Правила для escape-последовательностей в файлах параметров немного отличаются от правил для escape-последовательностей в строковых литералах в SQL-выражениях. В последнем контексте, если “x” не является допустимым символом escape-последовательности, \ становится “xx”, а не \. См. Раздел 11.1.1, «Строковые литералы».x
Правила экранирования для значений файлов параметров особенно важны для имён путей Windows, которые используют \ в качестве разделителя пути. Разделитель в имени пути Windows должен быть записан как \\, если за ним следует символ escape-последовательности. Он может быть записан как \\ или \, если за ним не следует символ escape-последовательности. В качестве альтернативы, / может быть использовано в именах путей Windows и интерпретируется как \. Предположим, что вы хотите указать базовый каталог C:\Program Files\MySQL\MySQL Server
9.2 в файле параметров. Это можно сделать несколькими способами. Вот несколько примеров:
basedir="C:\Program Files\MySQL\MySQL Server 9.2"
basedir="C:\\Program Files\\MySQL\\MySQL Server 9.2"
basedir="C:/Program Files/MySQL/MySQL Server 9.2"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s9.2
Если имя группы параметров совпадает с именем программы, параметры в группе применяются конкретно к этой программе. Например, группы [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-9.1], [mysqld-9.2] и так далее. Следующая группа указывает, что значение sql_mode должно использоваться только серверами MySQL с номерами версии 9.2.x:
[mysqld-9.2]
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.