Frage

Ich bin mit Linux Mint und zu versuchen, mySQL auf diese Weise

verbinden
mysql --port=3306 -u root -p

Dann fordert er mich nach meinem Passwort. Das ist alles in Ordnung. Warum ist es, dass, wenn ich so etwas wie dieses geben Sie es immer noch funktioniert ....

mysql --port=1234 -u root -p

ausfällt, dass nicht, da es kein mySQL Server läuft auf Port 1234?

Der Grund mir dies zu fragen, weil ich will einen SSH-Tunnel erstellen, um eine Datenbank auf einem anderen Server zu verbinden. Lassen Sie sich sagen, dass der SSH-Tunnel wird alle meinen Datenverkehr von localhost weiter: 3308 bis myremoteserver: 3306. Seit meinem lokalen mySQL Server meine Verbindungen auf allen Ports akzeptiert, kann ich keine Verbindung tatsächlich zu Port 3308 und auf den Remote-Server. Ich bin immer noch mein lokaler Server schlagen ....

Auch wenn meine SSH-Tunnel-Optionen falsch gewesen sein könnten, ich habe mich gefragt, ob jemand wüsste, warum ich auf Port 1234 verbinden und traf es nach wie vor meinem lokalen MySQL-Server auf 3306 ausgeführt wird?

War es hilfreich?

Lösung

IIRC mysql verbindet Sie mit einem Unix-Socket, wenn Sie localhost eine Verbindung herstellen. Da es nicht, dass Sie in diesem Fall über TCP stellt keine Verbindung gibt es keine beteiligt Port und der Port-Nummer nicht geben Angelegenheit.

Edit: Nicht sicher, ob dies auf allen Systemen der Fall ist, aber wenn ich 127.0.0.1 verwenden oder den Hostnamen anstelle von localhost, mysql Connects über TCP und die Portnummer nicht egal - ich kann nur mit dem richtigen Portnummer verbinden.

Andere Tipps

Um eine TCP-Verbindung verwenden --protocol=TCP zu erzwingen.

Beispiel:

Zuerst wird der SSH-Tunnel

ssh -L 4000:localhost:3306 server.ch

und dann eine Verbindung zu dem Remote-MySQL-Server mit

mysql -h localhost --port=4000 --protocol=TCP -u root -p

Es wird Sie nach Ihrem Passwort fragen vor versucht, sie zu verbinden. Wenn Sie Ihr Passwort (oder irgendetwas anderes für diese Angelegenheit) eingeben, und lassen Sie es gehen, reagiert es mit so etwas wie:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock'

@titanoboa, thx für diese! Ich habe das gleiche Problem. Nur hinzufügen Sie TCP tatsächlich Verbindung zwingen kann auch für localhost unter Verwendung der folgenden

[client]
port = 3306 
socket = /var/run/mysqld/mysqld.sock 
protocol = TCP

Prost

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top