Конфигурационные файлы MySQL и MariaDB
Некоторые полезные настройки, улучшающие производительность труда или решающие возникшие проблемы, нужно сохранить в конфигурационные файлы. Но вы можете столкнуться с ситуацией, что какое-то онлайн руководство рекомендует сохранить настройки в файл расположенный в определённой директории, а в вашей Linux этот файл или даже вся директория отсутствуют. Путаница ещё больше увеличивается из-за распространения как MySQL, так и форка под названием MariaDB, который во многом повторяет исходную СУБД, но при этом имеет свои нюансы.
Как поступить в этом случае? Нужно ли создавать новую директорию и файлы для настроек MySQL и MariaDB? Как различаются название групп для конфигурационных файлов в MySQL и MariaDB? Данная статья ответит на все эти вопросы.
Указать опции программы MySQL и MariaDB вы можете несколькими способами, например, в строке команды, в переменных окружения, в файлах настроек. Имеется приоритет опций указанных разными способами, подробнее об этом вы можете почитать по ссылке: https://dev.mysql.com/doc/refman/8.1/en/option-files.html
В данной заметке мы коснёмся только файлов с настройками.
Как узнать, где находится файл настроек MySQL (MariaDB)
Программы MySQL (MariaDB) показывают расположение конфигурационных файлов в первых строках при выводе справки:
mysql --help mariadb --help
Пример вывода:
Default options are read from the following files in the given order: /etc/my.cnf ~/.my.cnf
Пример вывода на другой версии Linux:
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
Как вы можете увидеть, MySQL и MariaDB используют сразу несколько конфигурационных файлов. Вы также могли обратить внимание на ремарку, что файлы считываются в перечисленном порядке — это важно в том случае, если файлы содержат взаимоисключающие настройки одних и тех же опций.
Напомним, что символ «~» обозначает домашнюю директорию текущего пользователя.
На самом деле файлов настройки обычно ещё больше, поскольку уже указанные файлы могут содержать директиву «include», например:
!includedir /etc/my.cnf.d
Если указана директория (как в примере выше), то будут считаны настройки из всех файлов *.cnf из указанной директории.
Также может быть указан определённый файл:
!include /home/mydir/myopt.cnf
Как узнать имена групп для файлов настроек MySQL и MariaDB
В пакеты MySQL и MariaDB кроме основных службы и клиента входит ещё довольно много программ. MySQL и MariaDB позволяют сочетать в одном конфигурационном файле настройки для разных утилит. Чтобы программы правильно определяли, какие настройки кому принадлежат, используются имена групп внутри файлов, например:
[client] [mysql] [mysqld] [mysqld-8.1] [mysqldump]
Имена групп для MySQL и MariaDB различаются. Чтобы узнать, какие имена групп использует ваш вариант СУБД, запустите справку и обратите внимание на первые строки вывода:
mysql --help mariadb --help
Пример вывода:
The following groups are read: mysql mariadb-client client client-server client-mariadb
То при настройке клиента и сервера данного варианта СУБД можно использовать следующие имена групп настроек:
[mysql] [mariadb-client] [client] [client-server] [client-mariadb]
Обратите внимание, что показаны имена групп только для клиента и только для сервера MySQL / MariaDB. Даже если они не перечислены, вы также можете использовать имена групп включающие имена других программ, например:
[mysqldump] [mysqladmin]
Связанные статьи:
- Как определить, какие службы нужно перезапустить (64.2%)
- Как сделать так, чтобы служба systemd перезапускалась в случае сбоя (РЕШЕНО) (64.2%)
- Нужно ли перезапускать службы при обновлении пакетов (64.2%)
- Решение проблемы с ошибкой mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Table 'performance_schema.session_variables' doesn't exist (1146) (35.9%)
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (35.9%)
- Ошибка при использовании выражений USE в MySQL (MariaDB): «ERROR 1044 (42000): Access denied for user» (РЕШЕНО) (RANDOM - 35.9%)