Auf meinem Arbeitscomputer läuft ein MySQL-Server, auf dem Mac OS X Maverick ausgeführt wird. Ich möchte vom Heimcomputer darauf zugreifen, der auch Mac OS Maverick hat.
Wenn ich vom Terminal aus in einem Tab ssh in meinen Arbeitscomputer ssh und die ssh-Sitzung dort sitzen lasse, ohne untätig zu sein, kann ich auf einem anderen Tab auf den MySQL-Server zugreifen.
Ohne die ssh-Sitzung wird jedoch der folgende Fehler angezeigt
FEHLER 2003 (HY000): Unter 'SERVER_IP_ADDRESS' (60) kann keine Verbindung zum MySQL-Server hergestellt werden.
Ich habe versucht, die my.cnf
Datei auf dem Server zu ändern, indem ich die Bindeadresse auskommentierte oder ihr zuwies, 0.0.0.0
aber es funktioniert nicht.
Warum ist es so? Wie kann ich den Server so konfigurieren, dass er Remotezugriff ermöglicht, ohne ssh auf dem Client ausführen zu müssen? Kann mir bitte jemand helfen?
ssh
es auf einer Registerkarte geöffnet ist, ansonsten jedoch nicht. Ich denke, das Problem ist, dass der Datenbankserverprozess angehalten wird oder nicht ausgeführt wird, wenn ich nicht am Remoteserver angemeldet bin.Antworten:
Ich habe heute unter OSX Yosemite mit MySQL 5.7, das kürzlich mit Homebrew aktualisiert wurde, gegen diesen Fehler gekämpft. Nach Vorschlägen zu StackOverflow und anderswo habe ich nach
my.cnf
Dateien gesucht, die alle angegeben wurdenbind-address=0.0.0.0
. Ich habe MySQL sogar gemäß diesen Anweisungen entfernt und neu installiert und dann mit neu installiertbrew install mysql
. Noch keine Remoteverbindungen erlaubt.Erst als ich lief
ps -ax | grep mysql
und bemerkte, dass die Bindeadresse im Startbefehl übergeben wurde (wodurch allemy.cnf
Dateien überschrieben wurden ), grub ich weiter und stellte fest, dass Homebrew MySQL standardmäßig an 127.0.0.1 bindet .Bearbeiten,
~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
um Änderungen vorzunehmen, um mein Problem--bind-address=127.0.0.1
zu--bind-address=0.0.0.0
lösen (letztere sollten in eine bestimmte IP-Adresse geändert werden, wenn dies nicht nur eine Entwicklungsmaschine ist).Ich bin der Meinung, dass dies eine wichtige Information ist, die in den meisten von mir konsultierten Ressourcen fehlte. Hoffentlich hilft das Posten hier jemand anderem!
BEARBEITEN : Wie LeandroCR in den Kommentaren angegeben hat,
brew services restart mysql
überschreibt das Ausführen die plist-Datei in LaunchAgents mit der Standarddatei, was dazu führt, dass MySQL Verbindungen auf mysteriöse Weise wieder ablehnt. Ein besserer Rat als das, was ich ursprünglich geschrieben habe, ist der folgende:/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
und ersetzen--bind-address=127.0.0.1
mitbind-address=*
oder--bind-address=0.0.0.0
( siehe MySQL - Dokumentation auf bind-Adresse )brew services restart mysql
Dann sollte MySQL von nun an weiterhin nicht lokale Verbindungen akzeptieren - bis Sie es vermutlich neu installieren.
Bearbeiten (Sep 2019) Timothy Zorn weist darauf hin, dass dieses Problem bei MySQL 8.x, das über Homebrew installiert und ausgeführt wird, nicht mehr auftritt. Daher ist meine Antwort aus dem Jahr 2016 möglicherweise nur für 5.x relevant.
quelle
brew install mysql56
und geändert . Aber immer noch, wenn ich mysql durch starte , zeigt der Befehl ps, dass die . Gibt es noch andere Dateien zum Bearbeiten?~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plist
mysql.server start
bind-address=127.0.0.1
mysql.server start
den LaunchAgent, sodass er seine Einstellung wahrscheinlich von einem anderen Ort erhält. Um die Einstellung in der zu verwendenplist
, müssen Sie wahrscheinlichbrew services restart mysql
brew services restart mysql
AusgabeSuccessfully started
mysql` (Bezeichnung: homebrew.mxcl.mysql) `, aber die Adresse ist immer noch127.0.0.1
. Eigentlich konnte ich nicht finden,homebrew.mxcl.mysql.plist
anstatthomebrew.mxcl.mysql56.plist
mysqld_safe
für mich ausgeführt wurde, hat keinebind_address
. Stattdessen wird es in angegeben/usr/local/etc/my.cnf
.Beim Ausführen wurde
locate my.cnf
die Datei gefunden/usr/local/etc/my.cnf
bind-address = 0.0.0.0
brew services restart mysql
quelle
Ich hoffe, Sie müssen den Benutzer für den Remotezugriff mit
'%'
Platzhalter erstellen und Berechtigungen für DBs erteilen.Schritt 1:
Kommentieren Sie in my.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) Ihre Bindungsadresse aus
Und starten Sie MySQL Server neu.
Schritt 2:
Anschließend müssen Sie dem Benutzer Berechtigungen für den Remotezugriff erteilen
Weitere Informationen finden Sie unter Aktivieren der Remoteverbindung.
quelle
mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
Überprüfen Sie iptables als iptables -L
Wenn Ihre IP nicht vorhanden ist, fügen Sie sie hinzu
Im Falle von Ubuntu ADD IP, um den Zugriff zu ermöglichen:
quelle