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

Есть ли команда, чтобы определить, какой файл конфигурации 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

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

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 Workbench будет показано в разделе "Состояние сервера":

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

  1. Найдите процесс MySQL в Сервисах под Control Panel -> Administration Tools
  2. Щелкните правой кнопкой мыши и выберите Properties
  3. Нажмите и выберите 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

Я установил 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 успешно, поэтому он использует этот.

Убедитесь, что вы получаете правильные файлы, особенно если у вас установлено несколько версий 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

Другие вопросы по тегам