Ответов (15)15
Если вы работаете в Linux, запустите mysqld strace
, например, с помощью strace ./mysqld
.
Среди всех других системных вызовов вы найдете что-то вроде:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
Итак, как вы можете видеть ... он перечисляет файлы .cnf, которые он пытается использовать и, наконец, использует.
Если вы запустите, mysql --verbose --help | less
он сообщит вам о строке 11, какие .cnf
файлы он будет искать.
Вы также mysql --print-defaults
можете показать вам, какие значения конфигурации он будет использовать. Это также может быть полезно для определения того, какой файл конфигурации загружается.
Я работаю в Windows и установил самую последнюю версию MySQL community 5.6.
Что я сделал, чтобы увидеть, какой файл конфигурации использует, - это перейти в Администрирование> Службы> MySQL56> Щелкните правой кнопкой мыши> Свойства и проверьте путь к исполняемому файлу:
"C: / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini" MySQL56
Для людей, использующих сервер Windows с mysql в качестве службы, простой способ узнать, какой файл конфигурации вы используете, - это открыть панель управления службами, найти службу mysql (в моем случае `` MYSQL56 ''), щелкнуть правой кнопкой мыши и щелкнуть свойства . Затем отсюда вы можете проверить «Путь к исполняемому defaults-file
файлу », который должен иметь переключатель, указывающий, где находится ваш файл конфигурации.
Если вы работаете в Windows, вы можете использовать Sysinternals procmon . Откройте его и настройте фильтр, как это, затем нажмите «Добавить». Теперь procmon будет отслеживать mysqld.
Теперь запустите свой сервер mysql как обычно. Procmon захватит фоновые операции mysql. Найдите "мой". в панели результатов procmon, и вы найдете что-то вроде следующего:
Понятно, что mysql по очереди ищет список файлов конфигурации. В моем случае он был C:\mysql-5.7.19-winx64\my.cnf
успешно найден, поэтому он использует этот.
Просто сделал быстрый тест на Ubuntu:
установлен mysql-сервер, на котором создан /etc/mysql/my.cnf
mysqld --verbose --help | grep -A 1 "Параметры по умолчанию"
110112 13:35:26 [Примечание] Плагин «FEDERATED» отключен.
Параметры по умолчанию считываются из следующих файлов в указанном порядке: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
созданы /etc/my.cnf и /usr/etc/my.cnf, каждый с другим номером порта
перезапустил mysql - он использовал номер порта, установленный в /usr/etc/my.cnf
Также тем временем был обнаружен параметр --defaults-file для mysqld. Если вы укажете здесь файл конфигурации, будет использоваться только он, независимо от того, что возвращается / usr / sbin / mysqld --verbose --help | grep -A 1 "Параметры по умолчанию"