Відповіді:
За замовчуванням не існує 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 містить зразки файлів конфігурації у папці файлів підтримки установки.
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
що я отримав
Насправді мені нічого не допомогло - я не зміг перезаписати налаштування у файл /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
Він знайшов ще один мій.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
Оновлення:
Якщо у вас є досить недавнє встановлення домашньої мови, ви повинні скористатися командами сервісу brew, щоб перезапустити mysql (використовуйте встановлену версію mysql, тобто mysql або mysql@5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
і brew services start mysql
замість launchctl unload ...
ліній.
в моїй системі це було
nano /usr/local/etc/my.cnf.default
як шаблон і
nano /usr/local/etc/my.cnf
як робочий.
Оскільки 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
який покаже вам активність файлової системи в режимі реального часу, пов'язану з цим файлом.
У випадку 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, встановленого з домашнім варивом.
Збільшення глобальних змінних із середовища mysql не було успішним. Тож у такому випадку створення ~ / .my.cnf - найбезпечніший варіант. Додавання змінних за допомогою [mysqld] включатиме зміни (Примітка: якщо ви змінюєтесь з [mysql], зміна може не працювати).
<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
Перезавантажте сервер mysql. і перевірити змінні. у
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
1 ряд у наборі (0,00 сек)