sql >> Database >  >> RDS >> Mysql

Een SSH-tunnel maken voor MySQL Remote Access

Deze handleiding laat u zien hoe u een veilige verbinding kunt maken met uw externe MySQL- of MariaDB-server vanaf uw lokale computer, met behulp van een SSH-tunnel . Dit is handig als u beheertools op uw lokale computer wilt gebruiken om werk op uw server te doen.

Een SSH-tunnel is een versleutelde tunnel die is gemaakt via een SSH-protocolverbinding. U kunt een SSH-tunnel gebruiken om op afstand met de MySQL-database te communiceren. Na het volgen van deze instructies kunt u verbinding maken met localhost op uw werkstation met uw favoriete MySQL-beheertool. De verbinding wordt veilig via internet doorgestuurd naar uw Linode.

Opmerking MariaDB is een vork van MySQL en wordt beschouwd als adrop-in-vervanging. Hoewel deze handleiding verwijst naar MySQL, is deze ook van toepassing op MariaDB.

Vereisten

  • MySQL is geïnstalleerd.
  • MySQL is geconfigureerd om te luisteren op localhost (127.0.0.1). Dit is standaard ingeschakeld.

Op afstand toegang krijgen tot MySQL door een SSH-tunnel te maken met PuTTY

In dit gedeelte wordt uitgelegd hoe u een SSH-tunnel naar MySQL op Windows maakt met behulp van de PuTTY-tool.

De tunnel opzetten

Eerst moet u een basisverbinding met uw Linode tot stand brengen:

  1. DownloadPuTTY.

  2. Sla PuTTY op uw bureaublad op.

  3. Dubbelklik op het PuTTY-bestand om te beginnen - installeren is niet nodig. U ziet het volgende venster:

  4. Voer de hostnaam of het IP-adres van uw Linode in bij Hostnaam (of IP-adres) veld.

  5. Ga in het linkermenu naar Verbinding -> SSH -> Tunnels .

  6. In de Bronpoort veld, voer 3306 . in .

  7. In de Bestemming veld, voer 127.0.0.1:3306 . in . Zie de definitieve configuratie hieronder:

  8. Klik op Openen om de SSH-sessie te starten.

  9. Als u zich nog niet eerder met PuTTY op dit systeem hebt aangemeld, ontvangt u een waarschuwing die lijkt op de volgende. Controleer of deze server de server is waarmee u verbinding wilt maken en klik vervolgens op Ja :

    Opmerking

    Deze waarschuwing verschijnt omdat PuTTY wil dat u controleert of de server waarop u zich aanmeldt, is wie hij zegt dat hij is. Het is onwaarschijnlijk, maar mogelijk dat iemand uw verbinding afluistert en zich voordoet als uw Linode. Om de server te verifiëren, vergelijkt u de sleutelvingerafdruk die wordt weergegeven in de PuTTY-waarschuwing - de reeks cijfers en letters die beginnen met ssh-rsa in de afbeelding hierboven - met de openbare sleutelvingerafdruk van uw Linode. Om de vingerafdruk van uw Linode te krijgen, logt u in op uw Linode via de Lish-console (zie de Console tabblad in de Linode Manager) en voer het volgende commando uit:

    ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
    

    De belangrijkste vingerafdrukken moeten overeenkomen. Zodra u op Ja . klikt , u ontvangt geen verdere waarschuwingen tenzij de sleutel die aan PuTTY wordt gepresenteerd om de een of andere reden verandert; normaal gesproken zou dit alleen moeten gebeuren als u het besturingssysteem van de externe server opnieuw installeert. Als u deze waarschuwing opnieuw ontvangt voor dezelfde Linode nadat de sleutel al in de cache is opgeslagen, moet u de verbinding niet vertrouwen en de zaken verder onderzoeken.

  10. Stuur uw lokale MySQL-client naar localhost:3306 . Uw verbinding met de externe MySQL-server wordt versleuteld via SSH, zodat u toegang krijgt tot uw databases zonder MySQL op een openbaar IP-adres uit te voeren.

Maak een SSH-tunnel op Mac OS X of Linux

In dit gedeelte wordt uitgelegd hoe u een SSH-tunnel naar MySQL op Mac OS X of Linux maakt.

  1. Installeer een MySQL-client. Het installeren van de MySQL-server wordt voorverpakt geleverd met een installatie van de client. Alleen de client installeren:

    MacOS

    brew install --cask mysql-shell
    

    Ubuntu/Debian

    sudo apt install mysql-client
    
  2. Open een opdrachtprompt en voer de volgende opdracht uit om de SSH-tunnel te openen.

    ssh [email protected] -L 3306:127.0.0.1:3306 -N
    

    Vervang <[email protected]> met uw SSH-gebruikersnaam en de hostnaam of het IP-adres van uw server. De lange reeks cijfers in de opdracht geeft een overzicht van het lokale IP-adres, de lokale poort, het externe IP-adres en de externe poort, gescheiden door dubbele punten (: ).

    -L - bindt een lokale poort aan de externe hostpost.-N - betekent poorten doorsturen.

    Opmerking

    Als je al een lokale MySQL-server op je werkstation gebruikt, gebruik dan een andere lokale poort (3307 is een gebruikelijke keuze). Uw nieuwe opdracht zou er als volgt uitzien:

    ssh [email protected] -L 3307:127.0.0.1:3306 -N
    
  3. Open een nieuw terminalvenster. Stuur uw lokale MySQL-client naar 127.0.0.1:3306 met de gebruikersnaam en het wachtwoord van de MySQL-server.

    MacOS

    mysqlsh --host=127.0.0.1 --port=3306 -u user -p
    

    Ubuntu/Debian

    mysql --host=127.0.0.1 --port=3306 -u user -p
    

    Uw verbinding met de externe MySQL-server wordt versleuteld via SSH, zodat u toegang krijgt tot uw databases zonder MySQL op een openbaar IP-adres uit te voeren.

  4. Wanneer je klaar bent om de verbinding te verbreken, geef je een CTRL-C commando of sluit het opdrachtpromptvenster. Hierdoor wordt de SSH-tunnel gesloten.

Persistente SSH-verbindingen

Als je een persistente SSH-tunnel nodig hebt, overweeg dan om autossh te gebruiken. autossh start en bewaakt een SSH-verbinding en herstart deze indien nodig.

Meer informatie

U kunt de volgende bronnen raadplegen voor aanvullende informatie over dit onderwerp. Hoewel deze worden verstrekt in de hoop dat ze nuttig zullen zijn, houd er rekening mee dat we niet kunnen instaan ​​voor de nauwkeurigheid of tijdigheid van extern gehost materiaal.

  • PuTTY gebruiken
  • MySQL-documentatie
  • MariaDB-documentatie
  • autossh

  1. Proactief verzamelen van informatie over fragmentatie van SQL Server-indexen

  2. MySQL-opdrachtregelopmaak met UTF8

  3. Onjuiste neutralisatie van speciale elementen die worden gebruikt in een SQL-opdracht

  4. pip install mysqlclient retourneert fatale fout C1083:Kan bestand niet openen:'mysql.h':Geen dergelijk bestand of map