Розташування файлу my.cnf на macOS


185

Я намагаюся дотримуватися цього підручника, щоб дозволити віддалений доступ до MySQL. Проблема в тому, де my.cnfфайл повинен розміщуватися? Я використовую Mac OS X Lion.


Я думаю, що це належить до сервера defaultfault.com. Але все ж ласкаво просимо до SO!
Артефакт2

Відповіді:


253

Ця тема на форумі MySQL говорить:

За замовчуванням установка OS X не використовує my.cnf, а MySQL просто використовує значення за замовчуванням. Щоб налаштувати свій власний my.cnf, ви можете просто створити файл прямо в / etc.

OS X надає приклади файлів конфігурації на /usr/local/mysql/support-files/.

І якщо ви не можете їх знайти там, MySQLWorkbench може створити їх для вас:

  1. Відкриття з'єднання
  2. Вибір у меню "Файл опцій" у меню "ІНСТАНЦІЯ".
  3. MySQLWorkbench здійснить пошук my.cnf, і якщо він не зможе його знайти, він створить його для вас

14
Принаймні , поточний пакет MySQL для Mac OS X (MySQL-5.6.17-osx10.7-x86_64 на момент написання цієї статті) робить насправді створити і використовувати my.cnf. Він розміщений за адресою /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy,

104
Ви можете переконатися, що mysql фактично завантажується в той my.cnfфайл, який Ви редагуєте,mysql --verbose --help | grep my.cnf
ryantuck

3
У Mac OS Sierra вона не була налаштована. Мені довелося скопіювати /usr/local/mysql/support-files/my-default.cnf в my.cnf в той самий реж. Зауважте, що mysql є посиланням на пакунок, у моєму випадку mysql-5.7.17-macos10.12-x86_64.
Крістен

17
Щойно зробив чисту установку MySQL 5.7.19 на Mac OS 10.12, використовуючи .dmg від dev.mysql.com. Немає my.cnf в жодному з місць, у яких mysql --help каже, що він виглядає. І немає / myr-default.cnf в / usr / local / mysql / support-files / або в іншому місці, яке я знайшов. Виявляється, що "з MySQL 5.7.18, my-default.cnf більше не включається до або не встановлюється пакетами дистрибуції" .
Кріс Бартлі

2
Ця відповідь стара і залежить від того, який інсталятор ви використовували для встановлення mysql. Homebrew ставить його на одне місце, інсталятор dmg ставить його на інше
slashdottir

79

У випадку Mac OS X Maverick, коли MySQL встановлюється через Homebrew, він знаходиться за адресою /usr/local/opt/mysql/my.cnf


6
що є /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / у моєму випадку встановлено MariaDB
Steven Lizarazo

9
Шахта знаходиться в /usr/local/etc/my.cnf
Стів Таубер

1
Моя була /usr/local/mysql/etc. Я на High Sierra, але було встановлено кілька версій назад.
Джошуа Пінтер

ви рятувальник життя
Ішан Срівастава

56

Загалом у Unix та Unix-подібних системах програми MySQL / MariaDB читають файли конфігурації / запуску в таких місцях (у визначеному порядку):

  • /etc/my.cnf - Глобальний
  • /etc/mysql/my.cnf - Глобальний
  • SYSCONFDIR/my.cnf - Глобальний

    SYSCONFDIRпредставляє каталог, вказаний з SYSCONFDIRможливістю, CMakeколи був побудований MySQL. За замовчуванням це каталог etc, який знаходиться під зібраним інсталяційним каталогом.

  • $MYSQL_HOME/my.cnf - для сервера (лише для сервера)

    MYSQL_HOME- це змінна середовище, що містить шлях до каталогу, в якому знаходиться специфічний для сервера my.cnfфайл. Якщо параметр MYSQL_HOMEне встановлено, і ви запускаєте сервер за допомогою mysqld_safeпрограми, mysqld_safeвстановлює його BASEDIRв базовий каталог установки MySQL.

  • файл, вказаний, --defaults-extra-file=pathякщо такий є

  • ~/.my.cnf - Конкретний користувач
  • ~/.mylogin.cnf - Конкретний користувач (лише клієнти)

Джерело: Використання файлів опцій .

Примітка. На платформах Unix MySQL ігнорує файли конфігурації, які можна записати у всьому світі. Це навмисно як захід безпеки.


Крім того, на Mac існує простий спосіб перевірити це.

  1. Виконати: sudo fs_usage | grep my.cnf

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

  2. В іншому терміналі перезапустіть MySQL / MariaDB, наприклад

    brew services restart mysql

    або:

    brew services restart mariadb
  3. На терміналі з fs_usage, слід вказати правильне розташування, наприклад

    15:52:22  access            /usr/local/Cellar/mariadb/10.1.14/my.cnf                                         0.000002   sh          

    Тож якщо файл не існує, створіть його.


6
Дякую! sudo fs_usage | grep my.cnfметод є досить ефективним. Я знаходжу цей файл у папці: /usr/local/etc/my.cnf
gary

3
Великий метод, однак я отримую кілька результатів є: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfз my_print_defв правій колонці. Потім через деякий час це лише /usr/local/etc/my.cnfмій термінал у самій правій колонці. Але всіх цих my.cnfфайлів не існує!
Андру

@Andru Якщо жодна з них не існує, створіть нову.
kenorb

1
Ваш останній набір інструкцій щодо sudo fs_usage | grep my.cnf було єдиним, що допомогло мені на цій сторінці, оскільки з незрозумілої причини mysqld не завантажувався з локацій за замовчуванням, перелічених через mysql -?
redbirdo

1
Ця команда sudo fs_usage | grep my.cnf врятував мені день, спасибі мільйон.
Шашикант Соні

33

Я не знаю, яку версію MySQL ви використовуєте, але тут можливі місця файлу my.cnf версії 5.5 (взятої звідси ) на Mac OS X:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(файл, вказаний --defaults-extra-file=path, якщо такий є)
  6. ~/.my.cnf

21

Для MySQL 5.7 на Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf

Скопіюйте конф. Конф. За замовчуванням /usr/local/mysql/support-files/my-default.cnf


4
Щоб зрозуміти, вам потрібно створити папку "etc /" самостійно, і вам потрібні привілеї root для цієї "sudo su -"
trojan

Не знайдено в цьому місці для мене. Я використовую MAMP
Mirza Vu

@mirzavu, дивіться це посилання: stackoverflow.com/questions/678645/…
Серхіо Родрігес

21

Якщо ви використовуєте macOS Sierra і файл не існує, запустіть

mysql --help or mysql --help | grep my.cnf

щоб побачити можливі розташування та послідовність завантаження / читання my.cnf для mysql, тоді створіть файл my.cnf в одному з запропонованих каталогів, а потім додайте наступний рядок

[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

sudo touch /{preferred-path}/my.cnfПотім ви можете відредагувати файл, щоб додати режим sql за допомогою

sudo nano /{preferred-path}/my.cnf

Потім перезапустіть mysql, voilaah, ви добре піти. щасливе кодування


13

Поточний пакет MySQL для Mac OS X Mavericks (MySQL-5.6.17-osx10.7-x86_64 на момент написання цієї статті) автоматично створює my.cnf під час установки.

Він розташований за адресою /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Адаптувати ваш шлях відповідно до вашої версії.


12

Тому жодна з цих речей не працювала для мене. Я використовую поточну установку dmg сервера спільноти mysql. ps показує, що всі найважливіші параметри, як правило, в my.cnf передаються в командному рядку, і я не міг зрозуміти, звідки це надходить. Після повнотекстового пошуку моєї скриньки я знайшов її в:

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Таким чином, ви можете або змінити їх там, або вийняти, щоб вони насправді поважали ті, що є у вашому my.cnf, куди б ви не вирішили його поставити.

Насолоджуйтесь!

Приклад інформації про файл, знайденого у цьому файлі:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
             <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
             <string>--early-plugin-load=keyring_file=keyring_file.so</string>

        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

чудово! ти врятував мій день.
Дженні

У мене був той самий випадок, але я також повинен був додати файл my.cnf до/etc/my.cnf
Едуард Муканс

11

Ви можете відкрити термінал і набрати locate my.cnf


На жаль, недостатньо конкретні, мені, мабуть, потрібно скопіювати "my-large.cnf" у якусь папку та перейменувати її "my.cnf". Але я не знаю куди ..
Ніколас

1
Крім того, вам потрібно мати заселене місце знаходження db. on mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

У mysql 5.6.22, який я встановив із Homebrew, шлях my.cnf є

/usr/local/opt/mysql/my.cnf 

10

macOs sierra 10.12.6 версія mysql: 5.7.18_1 Я запускаю locate my.cnf і шлях є

/usr/local/etc/my.cnf

сподіваюся, що це допоможе.


розгляньте про те, як додати пояснення до свого відмови
Inder

@ charles.cc.hsu: спробуйте скористатися командою locate my.cnfна своєму терміналі. який результат?
aginanjar

6

Ви можете створити свій файл у будь-якому каталозі, який ви хочете. Після створення ви можете "розповісти" шлях до mysql config:

введіть тут опис зображення


6

Ви можете перевірити файл

/usr/local/bin/mysql.serverі побачити, звідки my.confчитається.

Зазвичай це від /etc/my.cnfабо ~/my.cnfабо~/.my.cnf


Виправлення: ~/.my.cnf. Додайте крапку перед назвою файлу.
визначено

5

Для MAMP 3.5 Mac El Capitan створіть окремий порожній конфігураційний файл та напишіть додаткові налаштування для mysql

sudo vim /Applications/MAMP/Library/my.cnf

І додайте так

[mysqld]
max_allowed_packet = 256M


4

ЧИТАЙТЕ ДОКУМИ!

Допоможуть документи MySQL, для якої версії ви використовуєте. Зазвичай його описують як Options Fileабо MySQL Config File.
Документи мають розташування цих файлів у документації, як і іншіVITAL інформацію, як-от розташування та невеликі приклади того, як повинен виглядати файл конфігурації.

Версія 8 MySQL

Версія MySQL 5.7

Версія MySQL 5.6

MySQL версії 5.5

MySQL Версія 5.6 Японська

Важливі примітки:

На платформах Unix MySQL ігнорує файли конфігурації, які можна записати у всьому світі.

Це навмисно як захід безпеки.

Іншими словами, якщо у вашому конфігураційному файлі встановлені неправильні дозволи, НЕ завантажується.

Приклад початкового дозволу на налаштування одного з файлів конфігурації:

RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r--  1 myusername  wheel     0B Feb 25 20:40 /etc/my.cnf

Примітка:

Можна використовувати !includeдирективи у файлах опцій для включення інших файлів опцій та!includedir пошуку конкретних каталогів для файлів опцій .....

... MySQL не дає гарантій щодо порядку, в якому файли опцій у каталозі будуть читатися ...

Будь-які файли, які можна знайти та включити за допомогою директиви!! В операційних системах Unix, повинні мати імена файлів, що закінчуються на .cnf. У Windows ця директива перевіряє наявність файлів із .iniабо .cnfрозширенням.

Приклади того, як знайти ваше місцезнаходження у файлах конфігурації чи журналу:

SQL

Це не покаже вам конфігураційний файл, але допоможе вам знайти ваші інсталяційні файли / папки.

Версія MySQL 5.7 та 8+

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

Версія MySQL <= 5.6

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

SHELL / Термінал

RIZZOMBP$ mysql --help | grep "Default options" -A 1

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

Над командним кредитом: Ервін Майєр із ServerFault

RIZZOMBP$ mysqld --verbose --help | grep '/my.cnf' -B 1

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

АБО

RIZZOMBP$ ps aux | grep -i mysqld | grep -v $USER

_mysql 106 0.4 2.5 4232336 422112 ?? Ss 7:01PM 0:57.12
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so

Зразок файлу

Якщо вам потрібен докладний довідковий зразок my.cnf:

  1. https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
  2. https://www.linode.com/community/questions/5749/mysql-sample-config-files
  3. https://www.fromdual.com/mysql-configuration-file-sample

Немає приналежності / асоціацій до URL-адрес

Моя система:

RIZZOMBP$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
RIZZOMBP$ mysql -V
mysql  Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
RIZZOMBP$ mysqld -V
/usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld 
Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)

mysql --help | grep "Параметри за замовчуванням" -A 1. це допомогло.
wandermonk


2

Я перевірив у macOS Sierra, встановлену домашню програму MySql 5.7.12

Файли підтримки розміщені за адресою

/usr/local/opt/mysql/support-files

Просто скопіюйте my-default.cnfяк /etc/my.cnfабо, /etc/mysql/my.cnfі конфігурація буде вибрана при перезапуску.


4
Щойно я встановив 5.7.18 12.12.4 через домашню мову, і їх там немає.
norman_h

2

macOS High Sierra версія 10.13.6

mysql Ver 14.14 Distrib 5.7.22, для osx10.13 (x86_64), використовуючи обгортку EditLine Copyright (c) 2000, 2018, Oracle та / або її філії. Всі права захищені

Параметри за замовчуванням читаються з наступних файлів у заданому порядку:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf


1

Я використовую mysql версії 5.7.17 у macOS High Sierra версії 10.13.3, і тут я знайшов конфігураційний файл mysql.

cd /usr/local/mysql/support-files/my-default.cnf

Дякуємо за пораду щодо пошуку файлу конфігурації за замовчуванням. Зауважте, що це лише файл шаблону, тому ви хочете скопіювати це місце, mysql --verbose --help | grep my.cnfде воно знайдеться , відповідно до:DO NOT EDIT THIS FILE. It's a template which will be copied to the default location during install, and will be replaced if you upgrade to a newer version of MySQL.
Джошуа Пінтер

1

зазвичай це має бути під /usr/local/etcMac, якщо ви не знайдете його, ви можете створити його


0

Для Mac те, що працювало для мене, - це створити файл .my.cnf у моєму ~ шляху. Сподіваюся, це допомагає.



0

Для мене у версіях Сьєрра

скопіюйте конфігурацію за замовчуванням за адресою:

/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf

до

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


0

У моєму випадку файлу не існувало. У MySQL Workbench я перейшов до файлу OPTIONS і знайшов деякі значення за замовчуванням. Я натиснув застосувати. Він попросив дозволу. Потім він створив файл my.cnf під / etc. Однак дуже важливо пам’ятати, що при першому натисканні кнопки «застосувати» ви не вносите жодних змін у конфігурацію за замовчуванням. Після створення файлу ви можете внести зміни, які будуть застосовані, натиснувши "застосувати". Інакше під час внесення змін вам не відображатиметься кнопка застосувати.


У мене є файл параметрів, /etc/mysql/my.cnfале MySQL Workbench не знає про це. Натомість він скаржиться на те, що файл конфігурації з порожнім контуром неможливо знайти, а потім пропонує створити новий файл.
Алан Снайдер

0

Після версії 5.7.18 MySQL він не надає конфігураційний файл за замовчуванням у каталозі файлів підтримки. Таким чином, ви можете створити файл my.cnf вручну в тому місці, де читатиме MySQL, як-от /etc/mysql/my.cnf, і додати конфігурацію, яку ви хочете додати у файл.


0

Параметри rDefault читаються з таких файлів у заданому порядку: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Я запускаю MacOS Mojave (10.14.6) і щоб MySQL розпізнав мій файл конфігурацій, мені довелося розмістити його в /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Також у мене є символічне посилання, що вказує на нього від /usr/local/@mysql/etc/my.cnf.

Я намагався вимкнути sql_mode = only_full_group_by, і налаштування цієї опції у конфігураційному файлі була єдиним способом отримати налаштування для збереження протягом сеансів. Вміст конфігураційного файлу:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Я використовую нативну установку MySQL, а не налаштований Homebrew.


0

Для mysql 8.0.19 я нарешті знайшов my.cnf тут: /usr/local/opt/mysql/.bottle/etc Я скопіював його в / usr / local / opt / mysql / та змінив його. Потім я перезапускаю службу mysql, вона працює.

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