Определите, какой файл конфигурации MySQL используется

Есть ли команда для определения того, какой файл конфигурации MySQL 5.0 в настоящее время использует?

Ответов (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 можете показать вам, какие значения конфигурации он будет использовать. Это также может быть полезно для определения того, какой файл конфигурации загружается.

mysqld --help --verbose опасен. Вы можете легко перезаписать pidfile для запущенного экземпляра! используйте его с --pid-file = XYZ

О, и вы не можете использовать его, если у вас работает более 1 экземпляра. Он покажет вам только значение по умолчанию.

Действительно хорошая статья об этом:

Как найти файл конфигурации MySQL?

На некоторых серверах установлено и настроено несколько версий MySQL. Убедитесь, что вы имеете дело с правильной версией, запущенной с помощью команды Unix:

ps -ax | grep mysql

Я работаю в 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

Альтернативой является использование

mysqladmin variables

Для людей, использующих сервер Windows с mysql в качестве службы, простой способ узнать, какой файл конфигурации вы используете, - это открыть панель управления службами, найти службу mysql (в моем случае `` MYSQL56 ''), щелкнуть правой кнопкой мыши и щелкнуть свойства . Затем отсюда вы можете проверить «Путь к исполняемому defaults-file файлу », который должен иметь переключатель, указывающий, где находится ваш файл конфигурации.

На всякий случай, если вы используете Mac, этого также можно добиться:

sudo dtruss mysqld 2>&1 | grep cnf

Я нашел это действительно полезным:

  1. Найдите процесс MySQL в Сервисах в Control Panel -> Administration Tools
  2. Щелкните правой кнопкой мыши и выберите Properties
  3. Щелкните и выберите Path to executableи посмотрите, содержит ли он путь кmy.ini/my.cfg

При использовании MySQL Workbench он будет показан в разделе «Состояние сервера»: введите описание изображения здесь

Я установил использование mysql brew install mysql

mysqld --verbose --help | less

И оно показывает:

введите описание изображения здесь

Если вы работаете в Windows, вы можете использовать Sysinternals procmon . Откройте его и настройте фильтр, как это, затем нажмите «Добавить». Теперь procmon будет отслеживать mysqld.

введите описание изображения здесь

Теперь запустите свой сервер mysql как обычно. Procmon захватит фоновые операции mysql. Найдите "мой". в панели результатов procmon, и вы найдете что-то вроде следующего:

введите описание изображения здесь

Понятно, что mysql по очереди ищет список файлов конфигурации. В моем случае он был C:\mysql-5.7.19-winx64\my.cnf успешно найден, поэтому он использует этот.

В CentOS и MariaDB вы найдете настройки конфигурации сервера MariaDB в: /etc/my.cnf.d/server.cnf

Взято из фантастической книги О'Рейли "High Performance MySQL":

$ which mysqld
/usr/sbin/mysqld

$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/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 "Параметры по умолчанию"