Próbuję wykonać ten samouczek, aby umożliwić zdalny dostęp do MySQL. Problem polega na tym, gdzie powinien my.cnf
znajdować 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.cnf
znajdować 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.cnf
pliku, 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
SYSCONFDIR
reprezentuje katalog określony zSYSCONFDIR
opcją,CMake
kiedy 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_HOME
to zmienna środowiskowa zawierająca ścieżkę do katalogu, w którymmy.cnf
znajduje się plik specyficzny dla serwera . JeśliMYSQL_HOME
nie jest ustawiony, a serwer uruchamia się za pomocąmysqld_safe
programu,mysqld_safe
ustawia go naBASEDIR
podstawowy katalog instalacyjny MySQL.
plik określony z, --defaults-extra-file=path
jeś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 mariadb
Na terminalu z fs_usage
należ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.cnf
metoda 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.cnf
ze my_print_def
w prawej kolumnie. Potem po chwili jest tylko /usr/local/etc/my.cnf
z moim terminalem w prawej kolumnie. Ale wszystkie te my.cnf
pliki 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.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
(plik określony za pomocą --defaults-extra-file=path
, jeśli istnieje)~/.my.cnf
W 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.cnf
Nastę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.server
i zobacz, skąd my.conf
jest czytany.
Zwykle pochodzi z /etc/my.cnf
lub ~/my.cnf
lub~/.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 File
lub MySQL Config File
.
Dokumenty mają lokalizację tych plików w dokumentacji, a także inne VITAL
informacje, 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
!include
dyrektyw w plikach opcji, aby dołączyć inne pliki opcji i!includedir
przeszukać 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.ini
lub.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.cnf
jako /etc/my.cnf
lub, /etc/mysql/my.cnf
a 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.cnf
miejscu, 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.cnf
ale 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.