Есть ли команда для определения того, какой файл конфигурации MySQL 5.0 в настоящее время использует?
Определите, какой файл конфигурации MySQL используется
Ответы (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, которые он пытается использовать и, наконец, использует.
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
open(.... Вместо этого у меня есть 4 строки, заканчивающиеся на = -1 Err#2. Как я теперь узнаю, какой файл загружен?
- person mgPePe; 17.03.2014
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
!includedir. Я пытаюсь понять, почему директива !includedir в моем /etc/mysql/my.cnf файле не работает.
- person Buttle Butkus; 27.06.2016
mysqld с полным путем ?!
- person panepeter; 21.02.2018
Если вы запустите mysql --verbose --help | less, он сообщит вам о строке 11, какие .cnf файлы он будет искать.
Вы также можете сделать mysql --print-defaults, чтобы показать вам, какие значения конфигурации он будет использовать. Это также может быть полезно для определения того, какой файл конфигурации загружается.
mysqld вместо mysql
- person nl-x; 05.10.2015
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
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini.
- person Ryan Shillington; 03.01.2020
Альтернативой является использование
mysqladmin variables
mysqld --help --verbose опасен. Вы можете легко перезаписать pidfile для запущенного экземпляра! используйте его с --pid-file = XYZ
О, и вы не можете использовать его, если у вас работает более 1 экземпляра. Он покажет вам только значение по умолчанию.
Действительно хорошая статья об этом:
Как найти файл конфигурации MySQL?
Просто сделал быстрый тест на 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 "Параметры по умолчанию"
Я нашел это действительно полезным:
- Найдите процесс MySQL в Службах в
Control Panel -> Administration Tools - Щелкните правой кнопкой мыши и выберите
Properties - Щелкните и выберите
Path to executableи посмотрите, содержит ли он путь кmy.ini/my.cfg
На некоторых серверах установлено и настроено несколько версий MySQL. Убедитесь, что вы имеете дело с правильной версией, запущенной с помощью команды Unix:
ps -ax | grep mysql
Для людей, использующих сервер Windows с mysql в качестве службы, простой способ узнать, какой файл конфигурации вы используете, - это открыть панель управления службами, найти службу mysql (в моем случае `` MYSQL56 ''), щелкнуть правой кнопкой мыши и щелкнуть свойства . Затем отсюда вы можете проверить «Путь к исполняемому файлу», который должен иметь переключатель defaults-file, указывающий на то, где находится ваш файл конфигурации.
В случае, если вы используете mac, этого также можно добиться с помощью:
sudo dtruss mysqld 2>&1 | grep cnf
Если вы работаете в 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



