2017-05-30 14 views
1

Ich versuche eine Verbindung zu einer MariaDB-Datenbank (v 5.5.52) herzustellen, die auf Port 3306 auf einem CentOS (v 7.3.1611) -Box ausgeführt wird. Aus Sicherheitsgründen der Port 3306 des Servers wird die Firewall geschützt (telnet mysite.com 3306 mal out)Verbindung mit mysql über ssh nicht möglich

Weil ich in den Server mit einer konfigurierten Verbindung ssh kann: ssh projectx

und dann mit der Datenbank verbinden: mysql -u remote -p use staff;

ich diese Verbindung in Sequel erwarten Pro bekommen verbunden mich von meinem Laptop:

enter image description here

Aber ich bin immer diese Fehlermeldung:

Unable to connect to host 127.0.0.1, or the request timed out. MySQL said: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

Der Benutzer hat diese Zuschüsse: show grants for 'remote'@'%'; +----------------------------------------------------------------------------------+ | Grants for [email protected]% | +----------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'remote'@'%' IDENTIFIED BY PASSWORD 'redacted' | | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `staff`.* TO 'remote'@'%' | +----------------------------------------------------------------------------------+

Und ich habe dies in der [mysqld ] Abschnitt von my.cnf bind-address = *

Nein err oder angemeldet /var/log/mariadb/mariadb.log

+0

Sind Sie sicher, dass Ihre Software ** tatsächlich ** ~/.ssh/config verwendet? // Nevermind - es scheint, dass es tut: https://sequelpro.com/docs/get-started/get-connected/remote – Xatenev

+0

@Xatenev guter Gedanke, aber ja, ich habe ohne Probleme auf andere Server wie folgt verbunden. –

+1

Sie haben geschrieben, dass Sie mit einer konfigurierten Konfiguration auf den Server zugreifen können = = Bedeutet das, dass Sie versuchen, sich mit einem Drittanbieter-Server zu verbinden? In diesem Fall wäre MysQL Host 127.0.0.1 falsch und sollte durch die Server-IP ersetzt werden (ich denke so atleast? - nicht 100% sicher auf that1). – Xatenev

Antwort

1

Sie müssen keinen Remote-Benutzer @'%' definieren, wenn Sie eine SSH-Verbindung verwenden. Sie müssen auch keine andere Schnittstelle als 127.0.0.1 binden, da Sie sich im Wesentlichen vom lokalen Rechner aus verbinden.

Wie auch immer, bind-address sollte 127.0.0. in Ihrem Fall (für die Verbindung von localhost). Um MySQL an alle Schnittstellen zu binden, benötigen Sie 0.0.0.0 (aber das ist wiederum nicht nötig, wenn Sie ssh).

Stellen Sie außerdem sicher, dass MySQL für die Verwendung von TCP und nicht für einen lokalen Unix-Socket konfiguriert ist. Versuchen Sie, in die Maschine zu ssh-in und mysql -h 127.0.0.1 ... laufen zu lassen. Wenn dies nicht funktioniert und mysql -h localhost funktioniert, ist der Server so eingerichtet, dass er einen Unix-Socket verwendet.

Der entfernte sshd Daemon muss so eingerichtet sein, dass Portweiterleitung möglich ist. Fügen Sie Folgendes zu /etc/ssh/sshd_config hinzu:

AllowTcpForwarding yes 
+0

Ich kann ssh in und erfolgreich verbinden mit mysql -h 127.0.0.1 -u remote -p und ich habe auch erstellt und versuchte den "schmaleren" Benutzer 'remote'''127.0.0.1' aber keinen Erfolg. –

+0

Können Sie etwas wie 'ssh -L 3306 versuchen: localhost: 3306 Benutzer @ remote-server'? Versuchen Sie dann, eine Verbindung auf Ihrem Rechner herzustellen 'mysql -h 127.0.0.1 ...'. Dadurch werden Verbindungen in den lokalen 3306-Port zu Verbindungen mit dem 3306-Port der Gegenstelle umgewandelt. Das macht Sequel Pro hinter den Kulissen. – nimrodm

+0

Ich bekomme den gleichen Fehler, aber dieses Mal mit einer Fehlernummer: 'FEHLER 2013 (HY000): Verlorene Verbindung zu MySQL-Server bei" Lesen der ersten Kommunikationspaket ", Systemfehler: 0', die ich Google kann. Danke bis jetzt! –

Verwandte Themen