Для встановлення домашньої програми mysql, де my.cnf?


293

Для встановлення домашньої програми mysql, де my.cnf? Він встановлює один?

Відповіді:


263

За замовчуванням не існує 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 в командному рядку.


49
Це більше не здається так; Я бачу файл my.cnf у /usr/local/Cellar/mysql/5.6.15/ (або будь-яку інстальовану вами версію)
William Turrell

6
@williamt "mysql --help" не перераховує цей файл як використаний, я думаю, що це просто за замовчуванням, який постачається з інсталяційними файлами
Vinicius Pinto

2
Я на 5.6.26, і я цього не бачу.
Адам Грант

3
Увімкнути 5.6.26 можна запустивши: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfнасправді було легше знайти лінії.
vinyll

267

Домашня мова 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

4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Метт Клегг

7
Якщо Homebrew встановив MySQL в /usr/local/(я вважаю, що за замовчуванням я думаю), ви також можете розмістити my.confв /usr/local/etc/, який не вимагає привілеїв root.
gitaarik

1
brew - префікс mysql не дає правильного шляху, для мене він показує '/usr/local/Cellar/mysql/5.7.16', але дійсно mariadb встановлений у '/ usr / local / opt / mariadb /'
джаожі

@zhaozhi Використання brew --prefix mariadb. У дистрибутиві MariaDB my-default.cnfтакого не існує - тому використовуйте my-small.cnf. Спробуйте цеcp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe

Це має бути прийнятою відповіддю. Перший неправильний. Поставлене запитання стосувалося домашньої кави.
BugHunterUK

30

Один із способів дізнатися:

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

4
Чудова відповідь, я дізнався про locate.updatedb. Однак, за замовчуванням не існує жодного конфігураційного файлу, див. Відповідь нижче
glebm

15
Ви можете використовувати mdfind -name my.cnfзамість locateкоманди на OSX
JacopKane

Для мене locate my.cnfпрацювали безпосередньо. Я не бігавsudo /usr/libexec/locate.updatedb
Андру

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfі /usr/local/etc/my.cnf що я отримав
Вінсент Тан

18

Насправді мені нічого не допомогло - я не зміг перезаписати налаштування у файл /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 ...ліній.
mhulse

1
Це правда - але на момент написання цієї відповіді ці домашні команди ще не були доступні. Я
оновлю

17

в моїй системі це було

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

як шаблон і

nano /usr/local/etc/my.cnf

як робочий.


13

Оскільки 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.


10

За типом оболонки 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

5

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

brew list mysql # or: mariadb

Окрім того, щоб перевірити, чи читається цей файл, ви можете запустити:

sudo fs_usage | grep my.cnf

який покаже вам активність файлової системи в режимі реального часу, пов'язану з цим файлом.


4

Я вважаю, що відповідь - ні. Встановлення одного в ~ / .my.cnf або / usr / local / тощо є кращим рішенням.


2
На моєму MBP лише /etc/my.cnf дозволяє мені впливати на інсталяцію mysql Homebrew.
ewalshe

1

У випадку Homebrew, mysql також шукає my.cnf у своєму каталозі Cellar, наприклад:

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

У випадку, коли ви бажаєте тримати конфігурацію близько до двійкових файлів - створіть my.cnfтут, якщо він відсутній.

Перезапустіть mysql після зміни:

brew services restart mysql


-1

Для 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 сек)


-1
  1. $ps aux | grep mysqld /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin

  2. Завантажте файл my.cf у /usr/local/opt/mysql

  3. brew services restart mysql

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.