Определите, какой файл конфигурации используется
Есть ли команда, чтобы определить, какой файл конфигурации MySQL 5.0 в настоящее время использует?
16 ответов
Если вы работаете в 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, которые он пытается использовать и, наконец, использует.
Взято из фантастической книги О'Рейли "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
Если вы бежите mysql --verbose --help | less
он расскажет вам о строке 11, которая .cnf
файлы, которые он будет искать.
Вы также можете сделать mysql --print-defaults
чтобы показать вам, как значения конфигурации он будет использовать. Это также может быть полезно при определении того, какой файл конфигурации он загружает.
Я нахожусь на Windows, и я установил самую последнюю версию сообщества MySQL 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
mysqld --help --verbose опасно. Вы можете легко переписать pidfile для запуска экземпляра! используйте это с --pid-file=XYZ
О, и вы не сможете использовать его, если у вас запущено более 1 экземпляра. Он покажет вам только значение по умолчанию.
Действительно хорошая статья об этом:
Просто сделал быстрый тест на 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
Для людей, работающих под управлением Windows Server с MySQL в качестве службы, простой способ выяснить, какой файл конфигурации вы используете, это открыть панель управления службами, найти службу MySQL (в моем случае "MYSQL56"), щелкнуть правой кнопкой мыши и выбрать свойства, Затем отсюда вы можете проверить "Путь к исполняемому файлу", который должен иметь defaults-file
Переключатель, который указывает, где ваш файл конфигурации.
На некоторых серверах установлено и настроено несколько версий MySQL. Убедитесь, что вы имеете дело с правильной версией, работающей с командой Unix:
ps -ax | grep mysql
На случай, если вы используете 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
успешно, поэтому он использует этот.
Убедитесь, что вы получаете правильные файлы, особенно если у вас установлено несколько версий MySQL, например, с помощью таких инструментов, как DBNgin.
Вот что я сделал, чтобы найти правильный файл на Максе (должен работать и с Linux):
Бегатьps ax|grep mysqld
чтобы вывести список запущенных демонов:
36245 ?? S 18:46.08 /Users/Shared/DBngin/mysql/8.0.33/bin/mysqld --socket=/tmp/mysql_3306.sock
1: Проверьте, есть ли--no-defaults
,--defaults-file
или--defaults-extra-file
существует там.
2. Проверьте местоположения по умолчанию:
/Users/Shared/DBngin/mysql/8.0.33/bin/mysqld -v --help|more
3. Также убедитесь, что значения по умолчанию не переопределены.
/Users/Shared/DBngin/mysql/8.0.33/bin/mysqld --print-defaults
См. также официальную документацию .
В CentOS и MariaDB вы найдете настройки конфигурации сервера MariaDB в: /etc/my.cnf.d/server.cnf