Для доморощенных установок mysql, где my.cnf? Это установить один?
Для доморощенных установок mysql, где my.cnf? Это установить один?
Ответы:
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 в командной строке.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
было на самом деле легче найти линии.
Доморощенный mysql содержит примеры файлов конфигурации в папке support-files установки.
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
папку, поэтому я изменил команду для копирования файла /usr/local/etc
.
Если вы используете MariaDB вместо MySQL, используйте следующее:
cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(который, я думаю, используется по умолчанию), вы также можете поместить его my.conf
в /usr/local/etc/
, который не требует привилегий root.
brew --prefix mariadb
. В дистрибутиве MariaDB my-default.cnf
не существует - так что используйте my-small.cnf
. Попробуйте этоcp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Один из способов узнать это:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
вместо locate
команды на OSX
locate my.cnf
сработало напрямую. Я не бегалsudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
и /usr/local/etc/my.cnf
было то, что я получил
в моей системе это было
nano /usr/local/etc/my.cnf.default
как шаблон и
nano /usr/local/etc/my.cnf
как работает.
Ничто действительно не помогло мне - я не мог перезаписать настройки в файле /etc/my.cnf. Поэтому я искал, как Джон предложил https://stackoverflow.com/a/7974114/717251
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
Обновить:
Если у вас достаточно недавняя установка homebrew, вы должны использовать команды brew services для перезапуска mysql (используйте установленную версию mysql для homebrew, т.е. mysql или mysql@5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
и brew services start mysql
на месте launchctl unload ...
линий.
Поскольку mysql --help
показывает список файлов, я считаю полезным направить результат, ls
чтобы увидеть, какие из них существуют:
$ mysql --help | grep /my.cnf | xargs ls
ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf
Для моего (установленного Homebrew) MySQL 5.7 кажется, что файлы включены /usr/local/etc/my.cnf
.
На ваш тип оболочки 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
Вы можете найти, где my.cnf
файл был предоставлен конкретным пакетом, например,
brew list mysql # or: mariadb
Кроме того, чтобы проверить, читается ли этот файл, вы можете запустить:
sudo fs_usage | grep my.cnf
который покажет вам активность файловой системы в реальном времени, связанную с этим файлом.
Я считаю, что ответ - нет. Установка одного из них в ~ / .my.cnf или / usr / local / etc кажется предпочтительным решением.
В случае с Homebrew mysql также ищет my.cnf в каталоге Cellar, например:
/usr/local/Cellar/mysql/5.7.21/my.cnf
Для случая предпочитают держать конфигурацию близко к двоичным файлам - создайте my.cnf
здесь, если это отсутствует.
Перезапустите mysql после изменения:
brew services restart mysql
Версия сервера: 8.0.19 Homebrew. macOS Catalina 10.15.5 и установленный MySQL через Homebrew. Нашел этот файл здесь:
/usr/local/etc/my.cnf
Это решение помогло :)
Для MacOS (High Sierra), MySQL, который был установлен вместе с home brew.
Увеличение глобальных переменных из среды mysql не было успешным. Так что в этом случае создание ~ / .my.cnf - самый безопасный вариант. Добавление переменных с помощью [mysqld] будет включать изменения (Примечание: если вы измените с помощью [mysql], изменение может не сработать).
<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
Перезапустите сервер MySQL. и проверьте переменные. Y
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
1 ряд в наборе (0,00 сек)