Я намагаюся дотримуватися цього підручника, щоб дозволити віддалений доступ до MySQL. Проблема в тому, де my.cnf
файл повинен розміщуватися? Я використовую Mac OS X Lion.
Я намагаюся дотримуватися цього підручника, щоб дозволити віддалений доступ до MySQL. Проблема в тому, де my.cnf
файл повинен розміщуватися? Я використовую Mac OS X Lion.
Відповіді:
Ця тема на форумі MySQL говорить:
За замовчуванням установка OS X не використовує my.cnf, а MySQL просто використовує значення за замовчуванням. Щоб налаштувати свій власний my.cnf, ви можете просто створити файл прямо в / etc.
OS X надає приклади файлів конфігурації на /usr/local/mysql/support-files/
.
І якщо ви не можете їх знайти там, MySQLWorkbench може створити їх для вас:
my.cnf
файл, який Ви редагуєте,mysql --verbose --help | grep my.cnf
У випадку Mac OS X Maverick, коли MySQL встановлюється через Homebrew, він знаходиться за адресою /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc
. Я на High Sierra, але було встановлено кілька версій назад.
Загалом у 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 існує простий спосіб перевірити це.
Виконати: sudo fs_usage | grep my.cnf
Це повідомить про будь-яку активність файлової системи в режимі реального часу, пов'язану з цим файлом.
В іншому терміналі перезапустіть MySQL / MariaDB, наприклад
brew services restart mysql
або:
brew services restart mariadb
На терміналі з fs_usage
, слід вказати правильне розташування, наприклад
15:52:22 access /usr/local/Cellar/mariadb/10.1.14/my.cnf 0.000002 sh
Тож якщо файл не існує, створіть його.
sudo fs_usage | grep my.cnf
метод є досить ефективним. Я знаходжу цей файл у папці: /usr/local/etc/my.cnf
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
файлів не існує!
Я не знаю, яку версію MySQL ви використовуєте, але тут можливі місця файлу my.cnf версії 5.5 (взятої звідси ) на Mac OS X:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
(файл, вказаний --defaults-extra-file=path
, якщо такий є)~/.my.cnf
Для MySQL 5.7 на Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf
Скопіюйте конф. Конф. За замовчуванням /usr/local/mysql/support-files/my-default.cnf
Якщо ви використовуєте 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, ви добре піти. щасливе кодування
Поточний пакет 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
Адаптувати ваш шлях відповідно до вашої версії.
Тому жодна з цих речей не працювала для мене. Я використовую поточну установку 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>
/etc/my.cnf
Ви можете відкрити термінал і набрати locate my.cnf
macOs sierra 10.12.6 версія mysql: 5.7.18_1 Я запускаю locate my.cnf і шлях є
/usr/local/etc/my.cnf
сподіваюся, що це допоможе.
locate my.cnf
на своєму терміналі. який результат?
Ви можете перевірити файл
/usr/local/bin/mysql.server
і побачити, звідки my.conf
читається.
Зазвичай це від /etc/my.cnf
або ~/my.cnf
або~/.my.cnf
~/.my.cnf
. Додайте крапку перед назвою файлу.
Відкрийте термінал і скористайтеся командою нижче:
sudo find / -name my.cnf
Допоможуть документи MySQL, для якої версії ви використовуєте. Зазвичай його описують як Options File
або MySQL Config File
.
Документи мають розташування цих файлів у документації, як і іншіVITAL
інформацію, як-от розташування та невеликі приклади того, як повинен виглядати файл конфігурації.
На платформах 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
розширенням.
Приклади того, як знайти ваше місцезнаходження у файлах конфігурації чи журналу:
Це не покаже вам конфігураційний файл, але допоможе вам знайти ваші інсталяційні файли / папки.
Версія 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 '%\/%';
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:
Немає приналежності / асоціацій до 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)
Я перевірив у macOS Sierra, встановлену домашню програму MySql 5.7.12
Файли підтримки розміщені за адресою
/usr/local/opt/mysql/support-files
Просто скопіюйте my-default.cnf
як /etc/my.cnf
або, /etc/mysql/my.cnf
і конфігурація буде вибрана при перезапуску.
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
/private/etc/my.cnf для Каталіна
Я використовую 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.
Для Mac те, що працювало для мене, - це створити файл .my.cnf у моєму ~ шляху. Сподіваюся, це допомагає.
Скопіюйте /usr/local/opt/mysql/support-files/my-default.cnf як /etc/my.cnf або /etc/mysql/my.cnf, а потім перезапустіть mysql.
У моєму випадку файлу не існувало. У MySQL Workbench я перейшов до файлу OPTIONS і знайшов деякі значення за замовчуванням. Я натиснув застосувати. Він попросив дозволу. Потім він створив файл my.cnf під / etc. Однак дуже важливо пам’ятати, що при першому натисканні кнопки «застосувати» ви не вносите жодних змін у конфігурацію за замовчуванням. Після створення файлу ви можете внести зміни, які будуть застосовані, натиснувши "застосувати". Інакше під час внесення змін вам не відображатиметься кнопка застосувати.
/etc/mysql/my.cnf
але MySQL Workbench не знає про це. Натомість він скаржиться на те, що файл конфігурації з порожнім контуром неможливо знайти, а потім пропонує створити новий файл.
Параметри rDefault читаються з таких файлів у заданому порядку: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf
Я запускаю 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.
Для mysql 8.0.19 я нарешті знайшов my.cnf тут: /usr/local/opt/mysql/.bottle/etc Я скопіював його в / usr / local / opt / mysql / та змінив його. Потім я перезапускаю службу mysql, вона працює.