Waliłem głową w ten błąd dzisiaj na OSX Yosemite z MySQL 5.7 ostatnio zaktualizowanym o Homebrew. Zgodnie z sugestiami dotyczącymi StackOverflow i innych miejsc szukałem po my.cnf
plikach, które wszystkie zostały określone bind-address=0.0.0.0
. Nawet usunąłem i ponownie zainstalowałem MySQL zgodnie z tymi instrukcjami, a następnie ponownie zainstalowałem za pomocą brew install mysql
. Nadal niedozwolone połączenia zdalne.
Dopiero gdy uruchomiłem ps -ax | grep mysql
i zauważyłem, że adres powiązania był przekazywany w poleceniu uruchomienia (w ten sposób przesłaniając jakiekolwiek my.cnf
pliki), wykopałem jeszcze trochę i dowiedziałem się, że Homebrew domyślnie wiąże MySQL z 127.0.0.1 .
Edycja ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
w --bind-address=127.0.0.1
celu --bind-address=0.0.0.0
rozwiązania mojego problemu (ten ostatni powinien zostać zmieniony na konkretny adres IP, jeśli nie jest to tylko maszyna programistyczna).
Uważam, że jest to istotna informacja, której brakowało w większości zasobów, z którymi się skonsultowałem, więc mam nadzieję, że opublikowanie tego tutaj pomoże komuś innemu!
EDYCJA: Jak wskazał LeandroCR w komentarzach, uruchomienie brew services restart mysql
spowoduje zastąpienie pliku plist w LaunchAgents domyślnym, co spowoduje, że MySQL ponownie w tajemniczy sposób odmówi połączenia. Lepsza rada niż to, co pierwotnie napisałem, jest następująca:
- Edycja
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
i wymienić --bind-address=127.0.0.1
z bind-address=*
lub --bind-address=0.0.0.0
( patrz dokumentacja MySQL o bind-address )
- Uruchom ponownie mysql przy użyciu
brew services restart mysql
Następnie MySQL powinien nadal akceptować połączenia nielokalne od tego momentu - prawdopodobnie do momentu ponownej instalacji.
Edytuj (wrzesień 2019 r.)
Timothy Zorn zwraca uwagę, że ten problem nie występuje już w przypadku MySQL 8.x zainstalowanego i uruchomionego za pośrednictwem Homebrew, więc moja powyższa odpowiedź, napisana w 2016 r., Może dotyczyć tylko wersji 5.x.
ssh
jest otwarta na jednej karcie, ale poza tym nie. Myślę, że problem polega na tym, że proces serwera bazy danych jest wstrzymany lub nie działa, gdy nie jestem zalogowany na serwerze zdalnym.