Lokalizacja pliku my.cnf w systemie macOS


185

Próbuję wykonać ten samouczek, aby umożliwić zdalny dostęp do MySQL. Problem polega na tym, gdzie powinien my.cnfznajdować się plik? Używam Mac OS X Lion.


Myślę, że należy do serverfault.com. Ale nadal witamy w SO!
Artefact2

Odpowiedzi:


253

Wątek na forum MySQL mówi:

Domyślnie instalacja systemu OS X nie używa pliku my.cnf, a MySQL po prostu używa wartości domyślnych. Aby skonfigurować własny plik my.cnf, możesz po prostu utworzyć plik bezpośrednio w / etc.

OS X udostępnia przykładowe pliki konfiguracyjne na stronie /usr/local/mysql/support-files/.

A jeśli nie możesz ich tam znaleźć, MySQLWorkbench może je dla Ciebie utworzyć:

  1. Otwarcie połączenia
  2. Wybór „Pliku opcji” w menu „INSTANCJA”.
  3. MySQLWorkbench wyszuka plik my.cnf, a jeśli nie będzie mógł go znaleźć, utworzy go dla Ciebie

14
Przynajmniej do końca bieżącego pakietu MySQL dla Mac OS X (mysql-5.6.17-osx10.7-x86_64 w chwili pisania tego tekstu) ma w rzeczywistości tworzyć i używać my.cnf. Znajduje się na /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

104
możesz chcieć upewnić się, że mysql faktycznie ładuje się w dowolnym my.cnfpliku, który edytujeszmysql --verbose --help | grep my.cnf
ryantuck

3
W systemie Mac OS Sierra nie został jeszcze skonfigurowany. Musiałem skopiować /usr/local/mysql/support-files/my-default.cnf do my.cnf w tym samym katalogu. Zauważ, że mysql jest dowiązany symbolicznie do pakietu, w moim przypadku mysql-5.7.17-macos10.12-x86_64.
Christia

17
Właśnie wykonałem czystą instalację MySQL 5.7.19 na Mac OS 10.12 przy użyciu .dmg z dev.mysql.com. Nie ma my.cnf w żadnym miejscu, w którym mysql - help mówi, że to wygląda. I nie ma my-default.cnf w / usr / local / mysql / support-files / ani gdziekolwiek indziej, które znalazłem. Okazuje się, że „od MySQL 5.7.18 mój-default.cnf nie jest już dołączany do pakietów dystrybucyjnych ani instalowany w nich” .
Chris Bartley,

2
Ta odpowiedź jest stara i zależy od instalatora użytego do zainstalowania mysql. Homebrew stawia to w jednym miejscu, instalator dmg stawia w innym miejscu
slashdottir

79

W przypadku Mac OS X Maverick, gdy MySQL jest instalowany przez Homebrew, znajduje się na /usr/local/opt/mysql/my.cnf


6
który jest /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / w moim przypadku MariaDB jest zainstalowana
Steven Lizarazo

9
Mój jest w /usr/local/etc/my.cnf
Steve Tauber

1
Mój był /usr/local/mysql/etc. Jestem w High Sierra, ale zainstalowałem kilka wersji z powrotem.
Joshua Pinter

jesteś
ratownikiem

56

Ogólnie rzecz biorąc, w systemach Unix i podobnych do Unixa programy MySQL / MariaDB odczytują pliki konfiguracji / uruchamiania w następujących lokalizacjach (w określonej kolejności):

  • /etc/my.cnf - Globalny
  • /etc/mysql/my.cnf - Globalny
  • SYSCONFDIR/my.cnf - Globalny

    SYSCONFDIRreprezentuje katalog określony z SYSCONFDIRopcją, CMakekiedy został zbudowany MySQL. Domyślnie jest to katalog etc znajdujący się w skompilowanym katalogu instalacyjnym.

  • $MYSQL_HOME/my.cnf - Specyficzne dla serwera (tylko serwer)

    MYSQL_HOMEto zmienna środowiskowa zawierająca ścieżkę do katalogu, w którym my.cnfznajduje się plik specyficzny dla serwera . Jeśli MYSQL_HOMEnie jest ustawiony, a serwer uruchamia się za pomocą mysqld_safeprogramu, mysqld_safeustawia go na BASEDIRpodstawowy katalog instalacyjny MySQL.

  • plik określony z, --defaults-extra-file=pathjeśli istnieje

  • ~/.my.cnf - Specyficzne dla użytkownika
  • ~/.mylogin.cnf - Specyficzne dla użytkownika (tylko klienci)

Źródło: Korzystanie z plików opcji .

Uwaga: na platformach Unix MySQL ignoruje pliki konfiguracyjne, które można zapisać na całym świecie. Jest to celowe ze względów bezpieczeństwa.


Dodatkowo na Macu istnieje prosty sposób, aby to sprawdzić.

  1. Biegać: sudo fs_usage | grep my.cnf

    Spowoduje to zgłoszenie wszelkiej aktywności systemu plików w czasie rzeczywistym związanej z tym plikiem.

  2. W innym terminalu zrestartuj MySQL / MariaDB, np

    brew services restart mysql

    lub:

    brew services restart mariadb
  3. Na terminalu z fs_usagenależy wskazać właściwą lokalizację, np

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

    Więc jeśli plik nie istnieje, utwórz go.


6
Dzięki! sudo fs_usage | grep my.cnfmetoda jest bardzo skuteczna. Znajduję ten plik w folderze: /usr/local/etc/my.cnf
Gary

3
Świetny sposób, jednak mam kilka wyników tam: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfze my_print_defw prawej kolumnie. Potem po chwili jest tylko /usr/local/etc/my.cnfz moim terminalem w prawej kolumnie. Ale wszystkie te my.cnfpliki nie istnieją!
Andru

@Andru Jeśli żaden z nich nie istnieje, utwórz nowy.
kenorb

1
Ostatni zestaw instrukcji dotyczy sudo fs_usage | grep my.cnf był jedyną rzeczą, która pomogła mi na tej stronie, ponieważ z jakiegoś nieznanego powodu mysqld nie ładował się z domyślnych lokalizacji wymienionych przez mysql -?
redbirdo,

1
To polecenie sudo fs_usage | grep my.cnf uratował mi dzień, Dzięki milion.
Shashikant Soni

33

Nie wiem, której wersji MySQL używasz, ale oto możliwe lokalizacje pliku my.cnf dla wersji 5.5 (pobranej stąd ) w systemie 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(plik określony za pomocą --defaults-extra-file=path, jeśli istnieje)
  6. ~/.my.cnf


21

Jeśli używasz macOS Sierra, a plik nie istnieje, uruchom

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

aby zobaczyć możliwe lokalizacje i sekwencję ładowania / odczytu pliku my.cnf dla mysql, utwórz plik my.cnf w jednym z sugerowanych katalogów, a następnie dodaj następujący wiersz

[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.cnfNastępnie możesz edytować plik, aby dodać tryb sql przez

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

Następnie uruchom ponownie mysql, voilaah, jesteś gotowy. szczęśliwego kodowania



12

Więc żadna z tych rzeczy nie działała dla mnie. Używam bieżącej instalacji dmg serwera społeczności mysql. ps pokazuje, że wszystkie najbardziej krytyczne parametry normalnie w my.cnf są przekazywane w wierszu poleceń i nie mogłem dowiedzieć się, skąd to pochodzi. Po przeszukaniu pełnego tekstu mojego pola znalazłem go w:

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

Możesz więc je tam zmienić lub wyjąć, aby szanował te, które masz w my.cnf, gdziekolwiek zdecydujesz się go umieścić.

Cieszyć się!

Przykład informacji o pliku znalezionym w tym pliku:

<?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>

świetny! uratowałeś mi dzień
jenny

Miałem ten sam przypadek, ale musiałem również dodać plik.cnf do/etc/my.cnf
Eduard Mukans

11

Możesz otworzyć terminal i wpisać locate my.cnf


Przepraszam, że nie jestem wystarczająco szczegółowy, najwyraźniej muszę skopiować plik „my-large.cnf” do jakiegoś folderu i zmienić jego nazwę na „my.cnf”. Ale nie wiem gdzie ...
Nicolas

1
musisz także mieć zapełnioną lokalizację db. na Mac OSX: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

W mysql 5.6.22, który zainstalowałem z Homebrew, ścieżka do pliku my.cnf to

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

10

macOs sierra 10.12.6 mysql wersja: 5.7.18_1 Uruchomiam zlokalizuj mój.cnf i ścieżka jest

/usr/local/etc/my.cnf

mam nadzieję, że to pomoże.


rozważ dodanie wyjaśnienia do swojej odpowiedzi
Inder

@ charles.cc.hsu: spróbuj użyć komendy locate my.cnfna swoim terminalu. jaki wynik?
aginanjar

6

Możesz utworzyć plik w dowolnym katalogu. Po utworzeniu możesz „powiedzieć” ścieżkę do konfiguracji mysql:

wprowadź opis zdjęcia tutaj


6

Możesz sprawdzić plik

/usr/local/bin/mysql.serveri zobacz, skąd my.confjest czytany.

Zwykle pochodzi z /etc/my.cnflub ~/my.cnflub~/.my.cnf


Korekta ~/.my.cnf. Dodaj kropkę przed nazwą pliku.
niezdefiniowany

5

W przypadku MAMP 3.5 Mac El Capitan utwórz osobny pusty plik konfiguracyjny i zapisz dodatkowe ustawienia dla mysql

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

I dodaj tak

[mysqld]
max_allowed_packet = 256M


4

PRZECZYTAJ DOCS!

Pomocne będą dokumenty MySQL, dla których wersji używasz. Zwykle jest opisany jako Options Filelub MySQL Config File.
Dokumenty mają lokalizację tych plików w dokumentacji, a także inne VITALinformacje, takie jak lokalizacja i małe przykłady tego, jak powinien wyglądać plik konfiguracyjny.

MySQL wersja 8

MySQL wersja 5.7

MySQL wersja 5.6

MySQL wersja 5.5

MySQL wersja 5.6 japoński

Ważne notatki:

Na platformach Unix MySQL ignoruje pliki konfiguracyjne, które można zapisywać na całym świecie.

Jest to celowe ze względów bezpieczeństwa.

Innymi słowy, jeśli masz niewłaściwe uprawnienia do pliku konfiguracyjnego, NIE zostanie ono załadowane.

Przykład zezwolenia na wstępną konfigurację jednego z plików konfiguracyjnych:

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

Uwaga:

Możliwe jest użycie !includedyrektyw w plikach opcji, aby dołączyć inne pliki opcji i !includedirprzeszukać określone katalogi w poszukiwaniu plików opcji .....

... MySQL nie daje żadnej gwarancji co do kolejności, w jakiej będą czytane pliki opcji w katalogu ...

Wszystkie pliki, które można znaleźć i uwzględnić przy użyciu dyrektywy! Includedir w systemach operacyjnych Unix, muszą mieć nazwy plików kończące się na .cnf. W systemie Windows ta dyrektywa sprawdza pliki z rozszerzeniem .inilub .cnf.

Przykłady, jak znaleźć lokalizację pliku konfiguracji lub dziennika:

SQL

Nie wyświetli to pliku konfiguracyjnego, ale pomoże zlokalizować pliki instalacyjne / foldery.

MySQL wersja 5.7 i 8+

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

Wersja MySQL <= 5.6

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

SHELL / Terminal

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

Powyższe polecenie przypisane do: Erwin Mayer z 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

LUB

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

Przykładowy plik

Jeśli potrzebujesz szczegółowej referencyjnej próbki 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

Brak powiązania / powiązania z adresami URL

Mój system:

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 „Opcje domyślne” -A 1. to pomogło.
wandermonk

4

Używam MacOS Catalina (10.15.3) i znajduję się my.cnfw /usr/local/etc.


2

Sprawdziłem w macOS Sierra, zainstalowany homebrew MySql 5.7.12

Pliki pomocy znajdują się na stronie

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

Po prostu skopiuj my-default.cnfjako /etc/my.cnflub, /etc/mysql/my.cnfa konfiguracja zostanie odebrana przy ponownym uruchomieniu.


4
Właśnie zainstalowałem 5.7.18 na 12.12.4 przez homebrew i ich tam nie ma.
norman_h

2

MacOS High Sierra wersja 10.13.6

mysql Ver 14.14 Distrib 5.7.22, dla osx10.13 (x86_64) przy użyciu opakowania EditLine Copyright (c) 2000, 2018, Oracle i / lub podmioty stowarzyszone. Wszelkie prawa zastrzeżone

Domyślne opcje są odczytywane z następujących plików w podanej kolejności:

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


1

Używam mysql w wersji 5.7.17 w macOS High Sierra w wersji 10.13.3 i znalazłem tutaj plik konfiguracyjny mysql.

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

Dziękujemy za wskazówkę dotyczącą znalezienia domyślnego pliku konfiguracyjnego. Uwaga: jest to tylko plik szablonu, więc musisz skopiować go do lokalizacji znalezionej w mysql --verbose --help | grep my.cnfmiejscu, w którym zostanie odebrany, zgodnie z: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.
Joshua Pinter,

1

powinno to zwykle znajdować się w systemie /usr/local/etcMac, jeśli nie możesz go znaleźć, możesz go utworzyć


0

W przypadku komputerów Mac działało dla mnie tworzenie pliku .my.cnf na mojej ścieżce ~. Mam nadzieję że to pomoże.


0

Skopiuj /usr/local/opt/mysql/support-files/my-default.cnf jako /etc/my.cnf lub /etc/mysql/my.cnf, a następnie ponownie uruchom mysql.


0

Dla mnie w wersji sierra

skopiuj domyślną konfigurację na:

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

do

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


0

W moim przypadku plik nie istniał. W MySQL Workbench poszedłem do PLIKÓW OPCJI i znalazłem wartości domyślne. Kliknąłem zastosować. Poprosił o pozwolenie. Następnie utworzył plik my.cnf w / etc. Należy jednak pamiętać, że przy pierwszym kliknięciu przycisku „Zastosuj” nie wprowadza się żadnych zmian w konfiguracji domyślnej. Po utworzeniu pliku możesz wprowadzić zmiany, które zostaną zastosowane po kliknięciu „Zastosuj”. W przeciwnym razie nie zostanie wyświetlony przycisk Zastosuj podczas wprowadzania zmian.


Mam plik opcji w, /etc/mysql/my.cnfale MySQL Workbench nie jest tego świadomy. Zamiast tego narzeka, że ​​nie można znaleźć pliku konfiguracyjnego z pustą ścieżką, a następnie proponuje utworzenie nowego pliku.
Alan Snyder

0

Po wersji 5.7.18 MySQL nie zawiera domyślnego pliku konfiguracyjnego w katalogu plików pomocniczych. Możesz więc ręcznie utworzyć plik my.cnf w miejscu, w którym będzie czytany MySQL, np. /Etc/mysql/my.cnf, i dodać konfigurację, którą chcesz dodać do pliku.


0

Opcje rDefault są odczytywane z następujących plików w podanej kolejności: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Używam MacOS Mojave (10.14.6) i aby MySQL rozpoznał mój plik konfiguracyjny, musiałem go umieścić w /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Mam też symboliczny link do niego z /usr/local/@mysql/etc/my.cnf.

Próbowałem wyłączyć tryb_sql = only_full_group_by, a ustawienie tej opcji w pliku konfiguracyjnym było jedynym sposobem na utrzymanie tego ustawienia w sesjach. Zawartość pliku konfiguracyjnego to:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Używam natywnej instalacji MySQL, a nie konfiguracji Homebrew.


0

W przypadku mysql 8.0.19 w końcu znalazłem my.cnf tutaj: /usr/local/opt/mysql/.bottle/etc Skopiowałem go do / usr / local / opt / mysql / i zmodyfikowałem. Następnie ponownie uruchamiam usługę mysql, działa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.