Расположение файла my.cnf в macOS


193

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


1
Я думаю, это принадлежит serverfault.com. Но все же добро пожаловать в SO!
Artefact2

Ответы:


254

В этой теме на форуме 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

107
вы можете убедиться, что 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.
Christia

18
Только что выполнил чистую установку MySQL 5.7.19 на Mac OS 10.12 с использованием файла .dmg с сайта dev.mysql.com. My.cnf нет ни в одном из мест, где mysql --help говорит, что он ищет. И нет my-default.cnf в / usr / local / mysql / support-files / или где-либо еще, что я нашел. Оказывается, «начиная с MySQL 5.7.18 my-default.cnf больше не включается и не устанавливается пакетами распространения» .
Крис Бартли

2
Этот ответ старый и зависит от того, какой установщик вы использовали для установки mysql. Homebrew помещает его в одно место, установщик dmg
slashdottir

80

В случае 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
Стивен Лизаразо

13
Мой находится в /usr/local/etc/my.cnf
Стив Таубер,

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

Вы спасаете жизнь
Ишан Шривастава

60

Как правило, в 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          
    

    Так что, если файл не существует, создайте его.


7
Благодарность! 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

@Andru Если ни один из них не существует, создайте новый.
kenorb

1
Ваш последний набор инструкций re 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

25

Если вы используете 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, вуаля, все готово. счастливое кодирование


21

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

Копировать конфигурацию по умолчанию из /usr/local/mysql/support-files/my-default.cnf


4
Просто чтобы быть ясно, вы должны создать « и т.д. /» папку самостоятельно и вам нужны привилегии для этого «Sudo су -»
троянский

Не найдено в этом месте для меня. Я использую MAMP
Мирза Ву


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
Кроме того, вам необходимо иметь заполненную базу данных местоположения. в 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

надеюсь, это поможет.


подумайте о добавлении объяснения к вашему ответу
Индер

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


7

Откройте терминал и используйте команду ниже:

sudo find / -name my.cnf

6

Вы можете создать свой файл в любом каталоге. После создания вы можете "указать" путь к конфигурации mysql:

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


6

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

/usr/local/bin/mysql.serverи посмотрите, откуда my.confчитают.

Обычно это от /etc/my.cnfили ~/my.cnfили~/.my.cnf


Исправление: ~/.my.cnf. Добавьте точку перед именем файла.
undefined

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информация, такая как расположение и небольшие примеры того, как должен выглядеть файл конфигурации.

MySQL версии 8

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 не гарантирует, в каком порядке будут считываться файлы опций в каталоге ...

Все файлы, которые можно найти и включить с помощью директивы! Includedir в операционных системах 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 '%\/%';

ОБОЛОЧКА / Терминал

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 через homebrew, а их там нет.
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/etcна Mac, если вы его не найдете, вы можете создать его




0

Для меня в версии sierra

скопируйте конфигурацию по умолчанию по адресу:

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

к

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


0

В моем случае файла не было. В MySQL Workbench я перешел в ФАЙЛ ОПЦИЙ и нашел некоторые значения по умолчанию. Я нажал «Применить». Он попросил разрешения. Затем он создал файл my.cnf в / etc. Однако очень важно помнить, что при первом нажатии кнопки «Применить» вы не вносите никаких изменений в конфигурацию по умолчанию. После создания файла вы можете вносить изменения, которые будут применены, когда вы нажмете «Применить». В противном случае вам не будет отображаться кнопка «Применить» при внесении изменений.


У меня есть файл параметров, /etc/mysql/my.cnfно MySQL Workbench об этом не знает. Вместо этого он жалуется, что файл конфигурации с пустым путем не может быть найден, а затем предлагает создать новый файл.
Алан Снайдер

0

После версии MySQL 5.7.18 он не предоставляет файл конфигурации по умолчанию в каталоге файлов поддержки. Таким образом, вы можете создать файл 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.