sql >> Databasteknik >  >> RDS >> Mysql

Anslut till MySQL på distans

Detta är en avancerad handledning. Försiktigt! Vi kan inte ge någon hjälp för denna process och inte heller kan vi hjälpa till med några problem som orsakas av den. Var noga med att ta en fullständig serversäkerhetskopiering innan du fortsätter!

Det kan ibland vara användbart att aktivera fjärranslutningar till MySQL. Detta gör att du kan ansluta direkt till MySQL på en av dina servrar från en applikation eller MySQL-klient som körs på ett annat system.

Det finns två olika sätt att komma åt MySQL på distans:

  1. Använda en SSH-tunnel.
  2. Aktivera direkt åtkomst till MySQL från fjärrsystem.

Ansluta till MySQL med en SSH-tunnel

Att använda en SSH-tunnel är det enklaste och säkraste alternativet för fjärråtkomst till MySQL för utvecklingsändamål. En SSH-tunnel kommer att få det att se ut som att MySQL körs på ditt lokala system. SSH gör detta genom att öppna en lokal port och sömlöst överföra all kommunikation över den porten till MySQL som körs på din server.

För att skapa en SSH-tunnel från Mac eller Linux kan du köra kommandoraden SSH med -L för att aktivera lokal portvidarebefordran.

ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS

I exemplet ovan skulle SSH öppna port 2000 på ditt lokala system, och du kan sedan kommunicera med MySQL genom att ansluta till denna lokala port. Du kan till exempel ansluta med kommandot MySQL:

mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -p
Lämna inte --protocol=tcp eller så kan MySQL tyst ignorera --värden och --port alternativ.

Du kan också skapa SSH-tunnlar på Windows med PuTTy, den populära Windows SSH-klienten.

Aktivera direktåtkomst till MySQL från fjärrsystem

Varning! Om du tillåter direkt åtkomst till MySQL ökar risken för att din server äventyras av angripare. Varning! MySQL använder inte säkra anslutningar som standard. MySQL-manualen har mer information om SSL med MySQL.

Steg 1:Konfigurera MySQL för att lyssna på alla gränssnitt.

Som standard lyssnar MySQL endast efter anslutningar på localhost , så det första steget är att konfigurera om MySQL på din databasserver för att lyssna på alla gränssnitt. För att göra detta, logga in på din server som root .

Om du kör en Ubuntu 16.04- eller 18.04-server, redigera den här filen:

/etc/mysql/mysql.conf.d/mysqld.cnf

För 14.04 eller 12.04 servrar, redigera denna fil:

/etc/mysql/my.cnf

Hitta följande rad i endera filen:

bind-address = 127.0.0.1

Ändra bindningsadressen till 0.0.0.0 :

bind-address = 0.0.0.0

Spara den här filen och kör sedan följande kommando som root :

sudo service mysql restart

Steg 2:Öppna TCP-port 3306 i din servers brandvägg.

Brandväggen som konfigurerats av ServerPilot blockerar all åtkomst till MySQL utanför din server. Så du måste anpassa din brandvägg för att ge åtkomst till MySQL.

För att öppna åtkomst till MySQL från utsidan av din server, se vår artikel om att anpassa din brandvägg.

Ytterligare steg för EC2:Tillåt TCP-port 3306 i dina säkerhetsgrupper.

Om detta är en EC2-server måste du även tillåta port 3306 i din servers säkerhetsgrupper.

Konfigurera dina appar för att använda fjärrvärden.

När du har ställt in fjärrservern för MySQL, vill du konfigurera dina appar för att använda den värden för databastransaktioner. Detta ställs vanligtvis in i appens konfigurationsfil, och vi kommer att använda WordPress som vårt exempel.

Öppna appens wp-config.php-fil.

På den här raden:

define('DB_HOST', 'localhost');

Ändra "localhost" till din fjärranslutna MySQL-servers IP-adress eller fullständiga värdnamn. IP-adressen är vanligtvis ett snabbare och mer tillförlitligt val, eftersom den inte är beroende av DNS-upplösning.

Spara filen och avsluta, så är du redo! Du kan nu testa din app för att se till att den fungerar korrekt.


  1. En lösning för gränsen för åtkomst 255 kolumner

  2. Indexeras primärnyckeln automatiskt i MySQL?

  3. Snabbt sätt att generera sammanlänkade strängar i Oracle

  4. Hibernate, Postgresql:Kolumn x är av typen oid men uttrycket är av typen byte