Для доморощенных установок mysql, где my.cnf?

215

Для homebrew mysql устанавливает, где my.cnf? Он устанавливает один?

Теги:
homebrew

8 ответов

179
Лучший ответ

По умолчанию my.cnf отсутствует. Таким образом, MySQL запускается со всеми настройками по умолчанию. Если вы хотите создать свой собственный my.cnf, чтобы переопределить все значения по умолчанию, поместите его в /etc/my.cnf.

Кроме того, вы можете запустить mysql --help и просмотреть его для перечисленных адресов.

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit.
--no-defaults           Don't read default options from any option file.
--defaults-file=#       Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.

Как вы можете видеть, есть также некоторые опции для обхода файлов conf или указания других файлов для чтения при вызове mysql в командной строке.

  • 48
    Это больше не похоже на случай; Я вижу файл my.cnf в /usr/local/Cellar/mysql/5.6.15/ (или какую версию вы установили)
  • 5
    @williamt "mysql --help" не перечисляет этот файл как используемый, я думаю, что это просто значение по умолчанию, которое идет с установочными файлами
Показать ещё 7 комментариев
242

Домашняя страница mysql содержит пример файлов конфигурации в папке с файлами поддержки установки.

ls $(brew --prefix mysql)/support-files/my-*

Если вам нужно изменить настройки по умолчанию, вы можете использовать одну из них в качестве отправной точки.

cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf

Как указывает @rednaw, установка MySQL для доморощенного сервера, скорее всего, будет находиться в /usr/local, поэтому файл my.cnf не должен быть добавлен в системную папку /etc, поэтому Ive изменил эту команду, чтобы скопировать файл в /usr/local/etc.

Если вы используете MariaDB, а не MySQL, используйте следующее:

cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
  • 1
    Теперь это "my-default.cnf", но все еще отлично работает
  • 4
    sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Показать ещё 6 комментариев
16

Один способ узнать:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
  • 2
    Удивительный ответ, я узнал о locate.updatedb. Тем не менее, по умолчанию нет файла конфигурации, см. Ответ ниже
  • 11
    Вы можете использовать mdfind -name my.cnf вместо команды locate в OSX
Показать ещё 2 комментария
11

Мне ничего не помогло - я не смог перезаписать настройки в файле /etc/my.cnf. Поэтому я искал, как предложил Джон https://stackoverflow.com/questions/7973927/for-homebrew-mysql-installs-wheres-my-cnf

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf

Он нашел еще один my.cnf в

/usr/local/Cellar/mysql/5.6.21/my.cnf

изменение этого файла сработало для меня! Не забудьте перезапустить агент запуска:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • 0
    Я думаю, что вы также можете запустить brew services stop mysql а brew services start mysql вместо launchctl unload ...
  • 1
    Это правда, но на момент написания этого ответа эти доморощенные команды еще не были доступны. Я обновлю ответ
8

В вашем типе оболочки my_print_defaults --help

В нижней части результата вы должны увидеть файл, с которого сервер читает конфигурации. Он печатает что-то вроде этого:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
4

Я считаю, что ответ отрицательный. Установка одного в ~/.my.cnf или /usr/local/etc представляется предпочтительным решением.

  • 2
    На моем MBP только /etc/my.cnf позволяет мне повлиять на установку mysql в Homebrew.
1

Вы можете найти, где файл my.cnf был предоставлен конкретным пакетом, например

brew list mysql # or: mariadb

В дополнение к проверке, читается ли этот файл, вы можете запустить:

sudo fs_usage | grep my.cnf

который покажет вам активность файловой системы в реальном времени, связанную с этим файлом.

0

в моей системе было

nano /usr/local/etc/my.cnf.default 

в качестве шаблона и

nano /usr/local/etc/my.cnf

как работающий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню