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

Connettiti a MySQL in remoto

Questo è un tutorial avanzato.Attenzione! Non possiamo fornire alcuna assistenza per questo processo né possiamo aiutare con eventuali problemi causati da esso. Assicurati di eseguire un backup completo del server prima di procedere!

A volte può essere utile abilitare connessioni remote a MySQL. Ciò ti consente di connetterti direttamente a MySQL su uno dei tuoi server da un'applicazione o client MySQL in esecuzione su un sistema diverso.

Esistono due modi diversi per accedere a MySQL da remoto:

  1. Utilizzo di un tunnel SSH.
  2. Abilitazione dell'accesso diretto a MySQL da sistemi remoti.

Connessione a MySQL utilizzando un tunnel SSH

L'uso di un tunnel SSH è l'opzione più semplice e sicura per l'accesso remoto a MySQL per scopi di sviluppo. Un tunnel SSH farà sembrare che MySQL sia in esecuzione sul tuo sistema locale. SSH lo fa aprendo una porta locale e trasferendo senza problemi tutte le comunicazioni su quella porta attraverso MySQL in esecuzione sul tuo server.

Per creare un tunnel SSH da Mac o Linux, puoi eseguire il comando SSH della riga di comando con -L per abilitare il port forwarding locale.

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

Nell'esempio sopra, SSH aprirebbe la porta 2000 sul tuo sistema locale e potrai quindi comunicare con MySQL collegandoti a questa porta locale. Ad esempio, puoi connetterti usando il comando MySQL:

mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -p
Non tralasciare --protocol=tcp oppure MySQL può ignorare silenziosamente --host e --porta opzioni.

Puoi anche creare tunnel SSH su Windows usando PuTTy, il popolare client SSH di Windows.

Abilitazione dell'accesso diretto a MySQL da sistemi remoti

Attenzione! Consentire l'accesso diretto a MySQL aumenta il rischio che il tuo server venga compromesso da aggressori. Attenzione! MySQL non utilizza connessioni sicure per impostazione predefinita. Il manuale di MySQL contiene maggiori informazioni su SSL con MySQL.

Passaggio 1:configura MySQL per l'ascolto su tutte le interfacce.

Per impostazione predefinita, MySQL ascolta solo le connessioni su localhost , quindi il primo passaggio consiste nel riconfigurare MySQL sul server del database per l'ascolto su tutte le interfacce. Per fare ciò, accedi al tuo server come root .

Se stai utilizzando un server Ubuntu 16.04 o 18.04, modifica questo file:

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

Per i server 14.04 o 12.04, modifica questo file:

/etc/mysql/my.cnf

Trova la seguente riga in uno dei due file:

bind-address = 127.0.0.1

Modificare l'indirizzo di collegamento a 0.0.0.0 :

bind-address = 0.0.0.0

Salva questo file ed esegui il comando seguente come root :

sudo service mysql restart

Passaggio 2:apri la porta TCP 3306 nel firewall del tuo server.

Il firewall configurato da ServerPilot blocca tutti gli accessi a MySQL dall'esterno del tuo server. Quindi, dovrai personalizzare il tuo firewall per consentire l'accesso a MySQL.

Per aprire l'accesso a MySQL dall'esterno del tuo server, consulta il nostro articolo sulla personalizzazione del firewall.

Fase aggiuntiva per EC2:consenti la porta TCP 3306 nei tuoi gruppi di sicurezza.

Se si tratta di un server EC2, devi consentire anche la porta 3306 nei gruppi di sicurezza del tuo server.

Configura le tue app per utilizzare l'host remoto.

Dopo aver configurato il server MySQL remoto, ti consigliamo di configurare le tue app per utilizzare quell'host per le transazioni del database. Questo è in genere impostato nel file di configurazione dell'app e useremo WordPress come nostro esempio.

Apri il file wp-config.php dell'app.

A questa riga:

define('DB_HOST', 'localhost');

Cambia "localhost" con l'indirizzo IP del tuo server MySQL remoto o con il nome host completo. L'indirizzo IP sarà in genere una scelta più rapida e affidabile, poiché non si basa sulla risoluzione DNS.

Salva il file ed esci e il gioco è fatto! Ora puoi testare la tua app per assicurarti che funzioni correttamente.