sql >> Database teknologi >  >> RDS >> Mysql

Opret forbindelse til MySQL eksternt

Dette er en avanceret tutorial.Forsigtig! Vi kan ikke yde nogen hjælp til denne proces, og vi kan heller ikke hjælpe med problemer forårsaget af den. Sørg for at tage en fuld-server backup, før du fortsætter!

Det kan nogle gange være nyttigt at aktivere fjernforbindelser til MySQL. Dette giver dig mulighed for direkte at oprette forbindelse til MySQL på en af ​​dine servere fra en applikation eller MySQL-klient, der kører på et andet system.

Der er to forskellige måder at få fjernadgang til MySQL på:

  1. Brug af en SSH-tunnel.
  2. Aktivere direkte adgang til MySQL fra fjernsystemer.

Opret forbindelse til MySQL ved hjælp af en SSH-tunnel

Brug af en SSH-tunnel er den nemmeste og sikreste mulighed for fjernadgang til MySQL til udviklingsformål. En SSH-tunnel vil få det til at se ud som om MySQL kører på dit lokale system. SSH gør dette ved at åbne en lokal port og problemfrit overføre al kommunikation over den port til MySQL, der kører på din server.

For at oprette en SSH-tunnel fra Mac eller Linux kan du køre kommandolinjen SSH-kommandoen med -L for at aktivere lokal portvideresendelse.

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

I eksemplet ovenfor ville SSH åbne port 2000 på dit lokale system, og du kan derefter kommunikere med MySQL ved at oprette forbindelse til denne lokale port. For eksempel kan du oprette forbindelse ved hjælp af MySQL-kommandoen:

mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -p
Lad være med --protocol=tcp eller MySQL ignorerer muligvis --værten og --port muligheder.

Du kan også oprette SSH-tunneler på Windows ved hjælp af PuTTy, den populære Windows SSH-klient.

Aktivere direkte adgang til MySQL fra fjernsystemer

Advarsel! At tillade direkte adgang til MySQL øger risikoen for, at din server bliver kompromitteret af angribere. Advarsel! MySQL bruger ikke sikre forbindelser som standard. MySQL-manualen har mere information om SSL med MySQL.

Trin 1:Konfigurer MySQL til at lytte på alle grænseflader.

Som standard lytter MySQL kun efter forbindelser på localhost , så det første skridt er at omkonfigurere MySQL på din databaseserver til at lytte på alle grænseflader. For at gøre dette skal du logge ind på din server som root .

Hvis du kører en Ubuntu 16.04- eller 18.04-server, skal du redigere denne fil:

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

For 14.04- eller 12.04-servere skal du redigere denne fil:

/etc/mysql/my.cnf

Find følgende linje i begge filer:

bind-address = 127.0.0.1

Skift bind-adressen til 0.0.0.0 :

bind-address = 0.0.0.0

Gem denne fil, og kør derefter følgende kommando som root :

sudo service mysql restart

Trin 2:Åbn TCP-port 3306 i din servers firewall.

Firewallen konfigureret af ServerPilot blokerer al adgang til MySQL uden for din server. Så du bliver nødt til at tilpasse din firewall for at give adgang til MySQL.

For at åbne op for adgang til MySQL uden for din server, se vores artikel om tilpasning af din firewall.

Yderligere trin til EC2:Tillad TCP-port 3306 i dine sikkerhedsgrupper.

Hvis dette er en EC2-server, skal du også tillade port 3306 i din servers sikkerhedsgrupper.

Konfigurer din(e) app(er) til at bruge fjernværten.

Når du har konfigureret den eksterne MySQL-server, vil du gerne konfigurere dine app(er) til at bruge denne vært til databasetransaktioner. Dette er typisk sat op i appens konfigurationsfil, og vi bruger WordPress som vores eksempel.

Åbn appens wp-config.php-fil.

På denne linje:

define('DB_HOST', 'localhost');

Skift 'localhost' til din eksterne MySQL-servers IP-adresse eller fulde værtsnavn. IP-adressen vil typisk være et hurtigere og mere pålideligt valg, da den ikke er afhængig af DNS-opløsning.

Gem filen og afslut, og du er klar! Du kan nu teste din app for at sikre dig, at den fungerer korrekt.


  1. FEJL:Relationssteder findes ikke Heroku db import

  2. SQLite database læk fundet

  3. Postgres bruger eksisterer ikke?

  4. Tjek, om en tabel har en fremmednøgle i SQL Server med OBJECTPROPERTY()