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.
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.
Odpowiedzi:
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ć:
my.cnfpliku, który edytujeszmysql --verbose --help | grep my.cnf
W przypadku Mac OS X Maverick, gdy MySQL jest instalowany przez Homebrew, znajduje się na /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc. Jestem w High Sierra, ale zainstalowałem kilka wersji z powrotem.
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 - GlobalnySYSCONFDIR/my.cnf - Globalny
SYSCONFDIRreprezentuje katalog określony zSYSCONFDIRopcją,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órymmy.cnfznajduje się plik specyficzny dla serwera . JeśliMYSQL_HOMEnie jest ustawiony, a serwer uruchamia się za pomocąmysqld_safeprogramu,mysqld_safeustawia go naBASEDIRpodstawowy 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ć.
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.
W innym terminalu zrestartuj MySQL / MariaDB, np
brew services restart mysql
lub:
brew services restart mariadbNa 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.
sudo fs_usage | grep my.cnfmetoda jest bardzo skuteczna. Znajduję ten plik w folderze: /usr/local/etc/my.cnf
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ą!
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:
/etc/my.cnf/etc/mysql/my.cnfSYSCONFDIR/my.cnf$MYSQL_HOME/my.cnfdefaults-extra-file(plik określony za pomocą --defaults-extra-file=path, jeśli istnieje)~/.my.cnfW przypadku MySQL 5.7 w systemie Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf
Skopiuj domyślne conf z /usr/local/mysql/support-files/my-default.cnf
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
Aktualny pakiet MySQL dla Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 w momencie pisania tego tekstu) automatycznie tworzy my.cnf podczas instalacji.
Znajduje się na stronie /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Dostosuj ścieżkę do wersji.
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>
/etc/my.cnf
Możesz otworzyć terminal i wpisać locate my.cnf
Możesz utworzyć plik w dowolnym katalogu. Po utworzeniu możesz „powiedzieć” ścieżkę do konfiguracji mysql:
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
~/.my.cnf. Dodaj kropkę przed nazwą pliku.
Otwórz terminal i użyj poniższego polecenia:
sudo find / -name my.cnf
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.
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
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:
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 '%\/%';
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
Jeśli potrzebujesz szczegółowej referencyjnej próbki my.cnf:
Brak powiązania / powiązania z adresami 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)
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.
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
/private/etc/my.cnf dla Cataliny
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
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.
W przypadku komputerów Mac działało dla mnie tworzenie pliku .my.cnf na mojej ścieżce ~. Mam nadzieję że to pomoże.
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.
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.
/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.
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
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.
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.