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

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


person yalestar    schedule 24.02.2009    source источник


Ответы (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, которые он пытается использовать и, наконец, использует.

person Community    schedule 24.02.2009
comment
И как это сделать в работающей системе, ничего не испортив? - person Milan Babuškov; 11.05.2010
comment
@ MilanBabuškov Вы должны запустить ps auxf и найти команду, выполненную для MySQL. Обычно это похоже на что-то вроде mysqld --basedir=/usr/local/mysql ... (обратите внимание, что ... просто означает, что в команде может быть больше флагов, но я не буду перечислять их все). Как только вы его найдете, скопируйте все это и затем выключите MySQL. . Если вы используете Linux, это /etc/init.d/mysqld stop или mysqladmin -u root -p shutdown. Затем запустите strace с командой mysql, которую вы скопировали. Вот так бы это выглядело: strace mysqld --basedir=/usr/local/mysql - person Hengjie; 24.11.2012
comment
У меня нет строки open(.... Вместо этого у меня есть 4 строки, заканчивающиеся на = -1 Err#2. Как я теперь узнаю, какой файл загружен? - person mgPePe; 17.03.2014
comment
fwiiw, на Mac вы можете использовать dtruss вместо strace: sudo dtruss mysqld 2>&1|grep my.cnf @mgPePe, этот вывод, вероятно, означает, что ни один из файлов не был найден, поэтому ни один не был открыт. - person vitaly; 05.06.2014

Взято из фантастической книги О'Рейли "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
person Mark B    schedule 24.05.2010
comment
И я предполагаю, что последний файл в списке побеждает? - person mlissner; 19.04.2012
comment
это странно .. Я проверил все до единого, и все они пусты (на моем Mac) .. любая идея почему? - person abbood; 20.12.2013
comment
Это не дает загруженной конфигурации. довольно возможные пользовательские конфигурации, которые могут быть загружены - person mgPePe; 17.03.2014
comment
Я не думаю, что здесь будут перечислены файлы, указанные !includedir. Я пытаюсь понять, почему директива !includedir в моем /etc/mysql/my.cnf файле не работает. - person Buttle Butkus; 27.06.2016
comment
@ButtleButkus У меня была аналогичная проблема, потому что после! Includeir была лишняя строка. Удаление этой строки помогло. - person WiteCastle; 03.08.2016
comment
Зачем вам нужно вызывать mysqld с полным путем ?! - person panepeter; 21.02.2018
comment
Это не работает в Windows. Вместо этого вам нужен этот ответ: stackoverflow.com/a/17554146/491553 - person Ryan Shillington; 03.01.2020
comment
Я просто попытался проголосовать за этот ответ еще раз через 2 года после первого раза ... приятно знать, что у меня все еще есть хорошая привычка не соглашаться на принятый ответ и продолжать читать еще немного xD - person rtribaldos; 23.03.2021

Если вы запустите mysql --verbose --help | less, он сообщит вам о строке 11, какие .cnf файлы он будет искать.

Вы также можете сделать mysql --print-defaults, чтобы показать вам, какие значения конфигурации он будет использовать. Это также может быть полезно для определения того, какой файл конфигурации загружается.

person staticsan    schedule 24.02.2009
comment
+1, потому что это рекомендуемый mysql способ сделать это. Для Windows один простой способ - выгрузить вывод в файл, если вы хотите проанализировать содержимое. - person kta; 13.12.2013
comment
В Windows он сообщил мне список местоположений, но не тот, который мне удалось найти с помощью рабочей среды mysql (stackoverflow.com/ а / 17953456/1504300). - person reallynice; 03.02.2015
comment
Не уверен, что это имеет значение, но вы можете использовать mysqld вместо mysql - person nl-x; 05.10.2015
comment
И все же в Windows я чувствую, что my.ini читается из каталога ProgramData, и это не отображается в предложенном здесь ответе. - person nl-x; 05.10.2015
comment
Проголосуя за mysqld --print-defaults, он дал мне именно то, что я хотел, когда я погуглил этот вопрос. - person Per Lundberg; 20.06.2019

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

person Alexandru Trandafir Catalin    schedule 09.07.2013
comment
Это также работает для MySQL 5.7. По умолчанию это C:\ProgramData\MySQL\MySQL Server 5.7\my.ini. - person Ryan Shillington; 03.01.2020

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

mysqladmin variables
person Steve    schedule 09.06.2012
comment
На самом деле он не говорит, где находится файл cnf в моих переменных. В настоящее время я использую MySQL 5.5.20. Однако я могу сказать, что когда-то это действительно работало, как я видел это ранее в переменных. Возможно, что-то изменилось с момента перехода на 5.5. - person Hengjie; 24.11.2012

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

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

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

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

person Sasha    schedule 16.04.2012

Просто сделал быстрый тест на 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 "Параметры по умолчанию"

person Herta    schedule 12.01.2011

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

person fanThomas    schedule 04.10.2016

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

  1. Найдите процесс MySQL в Службах в Control Panel -> Administration Tools
  2. Щелкните правой кнопкой мыши и выберите Properties
  3. Щелкните и выберите Path to executable и посмотрите, содержит ли он путь к my.ini/my.cfg
person Luke    schedule 20.09.2015
comment
Это сработало для меня при установке Server 2008, спасибо. - person delliottg; 21.03.2016

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

ps -ax | grep mysql
person Heather McVay    schedule 14.01.2013

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

person Kershrew    schedule 26.07.2016

В случае, если вы используете mac, этого также можно добиться с помощью:

sudo dtruss mysqld 2>&1 | grep cnf
person talsibony    schedule 22.06.2017

Я установил mysql use brew install mysql

mysqld --verbose --help | less

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

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

person Kernel    schedule 02.07.2020

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

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

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

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

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

person Just a learner    schedule 28.08.2017
comment
Это в основном эквивалент верхнего ответа для Windows. Спасибо. - person Aaron Wallentine; 21.11.2019

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

person B.K    schedule 13.08.2020