ssh zuerst mit mysqldb python
Ich versuche eine Verbindung zu einer MySQL-Datenbank auf einem remote-server mit MySQLdb python. Das problem ist, dass zuerst muss ich die SSH-Verbindung auf den host, und dann von dort, ich muss eine Verbindung zum MySQL-server. Das problem das ich habe ist allerdings, dass die MySQLdb nicht scheinen, um einen Weg, der Aufbau einer SSH-Verbindung, bevor Sie eine Verbindung zum SQL-server. Ich habe die Dokumentation aber haben kein Glück gehabt.
Dies ist, wie ich mich anschließen:
conn = MySQLdb.connect(host = 'mysqlhost.domain.com:3306', user = 'user', passwd = 'password', db = 'dbname')
Aber was ich wirklich brauche, ist so etwas wie dieses:
conn = MySQLdb.connect(sshhost = 'sshhost.domain.com', sshuser = 'sshusername', sshpasswd = 'sshpasswd', host = 'mysqlhost.domain.com:3306', user = 'user', passwd = 'password', db = 'dbname')
Ist natürlich nur ausgedacht. Kann jemand Empfehlungen?
- Versuchen Sie, um einen SSH-tunnel stackoverflow.com/questions/3577555/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einrichtung eines ssh-tunnel, bevor Sie MySQLdb.verbinden. Den tunnel wird es erscheinen, als ob Sie die mysql lokal läuft, richten Sie es so etwas wie dieses
hier den lokalen port 9990 bindet 3306 auf dem remote-host, -L steht für local, dann 9990:localhost:3306 bedeutet LOCALPORT:
conn = MySQLdb.connect(host = 'mysqlhost.domain.com:9990', user = 'user', passwd = 'Passwort', db = 'dbname')
beachten Sie die 9990.
Fügen Sie Ihren öffentlichen ssh-Schlüssel der Benutzer auf der host.com so dass Sie nicht haben, um geben Sie das Kennwort jedes mal, wenn Sie wollen, um den setup-tunnel (verwenden public-key-Authentifizierung).
Wenn Sie tun müssen, ist, dies in python gibt es python-auf-ssh-Bindung Bibliotheken Sie nennen könnte innerhalb von python, um den setup-tunnel für Sie.
Ich bevorzuge die tunnel innerhalb der python-code, ich hab Hass zu erzeugen-Tunnel manuell, oder einzeln, Dank sshtunnel Bibliothek, die sehr einfach zu bedienen.
Hier ist einige einfache Muster, die die Arbeit für das, was Sie wollen.