Come consentire connessioni remote a MySQL

Se stai lavorando con un database MySQL(MySQL database) , sei già consapevole delle sfide che devi affrontare per mantenere sicuro il tuo database. Dai tentativi di hacking del database tramite iniezioni SQL agli attacchi di forza bruta, è difficile mantenere i tuoi dati al sicuro, soprattutto se lavori con un database in remoto.

Esistono modi per configurare un server SQL per consentire connessioni remote, ma è necessario prestare attenzione, poiché consentire connessioni remote su un server MySQL può rendere il database un facile bersaglio per gli hacker. Se vuoi consentire connessioni remote e sicure a un database MySQL , ecco cosa devi sapere.

Prima di iniziare(Before You Begin)

Prima di apportare modifiche al database MySQL , è importante eseguire il backup del database(backup your database) , soprattutto se stai lavorando su un server di produzione (un server in uso attivo). Qualsiasi modifica apportata al database o al server che lo ospita potrebbe causare una grave perdita di dati se qualcosa va storto.

Potresti anche scoprire che le modifiche alle connessioni del tuo server potrebbero impedirti di accedervi in ​​seguito. In questo caso, potrebbe essere necessario consultare un amministratore del server per ulteriore supporto. Una buona idea è provare tutte le modifiche su un server MySQL eseguito localmente per verificare se le modifiche funzionano prima di provarle in remoto.

È anche probabile che se stai apportando modifiche a un server remoto, avrai bisogno di un modo sicuro per connetterti e apportare modifiche. SSH (Secure Shell) è spesso il modo migliore per farlo, poiché ti consente di connetterti al tuo server remoto. Puoi anche utilizzare SSH per connetterti ai server sulla tua rete locale, come quelli ospitati su un Raspberry Pi(hosted on a Raspberry Pi) .

Questa guida ti guiderà attraverso i passaggi per configurare MySQL per consentire connessioni remote, ma dovrai prima assicurarti di avere accesso diretto o remoto al server che ospita il tuo server MySQL .

Supponiamo(Suppose) che tu non abbia accesso remoto al tuo server tramite SSH (ad esempio). In tal caso, non sarai in grado di configurare il tuo database MySQL per consentire connessioni remote direttamente a meno che il tuo account mySQL root non consenta già connessioni remote. Quindi, prima di poter procedere, dovrai stabilire questa connessione.

Modifica del file di configurazione di MySQL(Editing Your MySQL Configuration File)

Il primo passaggio nella configurazione di MySQL per consentire le connessioni remote è modificare il file di configurazione di MySQL . A questo punto, questa guida presupporrà che tu sia già connesso al server, al PC o al Mac che ospita il tuo database MySQL in remoto e che hai accesso alla console. 

In alternativa, puoi configurare un server MySQL locale utilizzando un terminale aperto su Mac o Linux o un editor di testo su Windows .

  1. Per iniziare, usa l'editor di testo della tua console preferito per modificare il file del database MySQL . Su Linux , digita sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf in un terminale o in una finestra SSH per modificare questo file usando l' editor nano (supponendo che il tuo database MySQL si trovi nella posizione predefinita)

  1. Se stai utilizzando Windows , apri Esplora file(File Explorer) e accedi alla cartella contenente la tua installazione di MySQL (es. C:/Program Files/MySQL/MySQL Server 8.0 ). Apri il file my.ini utilizzando il tuo editor di testo predefinito (es. Blocco note(Notepad) ) facendo doppio clic sulla voce. Se non è presente, crea prima il file(create the file first) .

  1. Su Mac , apri una finestra di terminale e digita sudo nano /usr/local/etc/my.cnf . Questo è il file di configurazione predefinito per MySQL se hai installato MySQL usando homebrew(using homebrew) .

Le posizioni di cui sopra sono le posizioni predefinite per i file di configurazione di MySQL . Se questi comandi non funzionano, dovrai cercare manualmente i file pertinenti ( my.cnf , mysqld.cnf o my.ini ) per individuare il percorso del file pertinente.

Impostazione di un intervallo IP di indirizzi di binding sicuri(Setting a Safe Bind-Address IP Range)

  1. Dopo aver aperto il file di configurazione MySQL per il tuo server, usa il tasto freccia della tastiera per raggiungere la sezione dell'indirizzo(bind-address) di collegamento del file. Questo intervallo IP limita le connessioni al database, che in genere è impostato per consentire solo le connessioni dal computer o dal server locale utilizzando 127.0.0.1 .

  1. Se desideri configurare il tuo database MySQL per consentire le connessioni dai dispositivi che utilizzano la tua attuale connessione Internet, trova prima il tuo indirizzo IP pubblico(find your public IP address) , quindi sostituisci 127.0.0.1 con quell'indirizzo IP. In alternativa, sostituiscilo con un indirizzo IP per il dispositivo o il server da cui desideri consentire le connessioni.

  1. In alcune circostanze, potresti voler consentire tutte(all) le connessioni remote a un database MySQL . Ciò comporta un rischio estremo(extreme risk) e non dovrebbe essere utilizzato su un server di produzione. Se vuoi consentire ciò, tuttavia, sostituisci 127.0.0.1 con 0.0.0.0 .

  1. Prendere nota del valore della porta(port ) nella sezione Impostazioni di base(Basic Settings) . Questo sarà richiesto nella prossima sezione. Se non è visibile, verrà utilizzato il valore predefinito, ovvero la porta 3306 . Puoi aggiungere la tua porta digitando port = xxxx su una nuova riga, sostituendo xxxx con un valore di porta adatto.

  1. Dopo aver configurato l' indirizzo(bind-address ) di collegamento nel file di configurazione di MySQL , salva il file. Se sei su Linux , seleziona Ctrl + O e Ctrl + X per farlo. Su Mac, seleziona Command + O e Command + X . Gli utenti Windows possono salvare selezionando File > Salva(Save) .

  1. Successivamente, gli utenti Linux e Mac possono riavviare MySQL digitando mysql.server stop && mysql.server start o mysql.server restart . Potrebbe essere necessario elevare il comando utilizzando sudo(using sudo) (ad es. sudo mysql.server restart ) e utilizzare il percorso appropriato del file mysql.server (ad es. /usr/local/bin/mysql.server ).

  1.  Se il comando precedente non funziona, prova invece sudo service mysql restart .

  1. Per riavviare MySQL su Windows , apri una nuova finestra di PowerShell facendo clic con il pulsante destro del mouse sul menu Start e selezionando Windows PowerShell (Admin) . Nella finestra di PowerShell, digita net stop mysql80 seguito da net start mysql80 , sostituendo mysql80 con il nome del servizio corretto sul tuo PC.

Se non sei sicuro del nome del servizio corretto su Windows , digita net start per trovarlo. Se non riesci a ricaricare la configurazione, riavvia il server e ricarica MySQL manualmente (se necessario).

Configurazione dei firewall(Configuring Your Firewalls)

A questo punto, il tuo database MySQL dovrebbe consentire connessioni remote dai dispositivi utilizzando l'indirizzo IP che hai impostato come valore dell'indirizzo di collegamento(bind-address) nel tuo file di configurazione MySQL (o da tutti i dispositivi se invece imposti questo valore su 0.0.0.0 ). Tuttavia, le connessioni verranno comunque bloccate dal tuo dispositivo o dal firewall di rete(device or network firewall) .

La maggior parte dei server e dei PC utilizza un firewall per bloccare le connessioni a meno che non venga concesso l'accesso a una porta specifica. I passaggi per configurarlo varieranno, a seconda che tu stia eseguendo MySQL su Windows o Linux . I firewall Mac(Mac) sono disabilitati per impostazione predefinita, quindi non dovresti aver bisogno di completare altri passaggi qui.

Configura firewall Linux(Configure Linux Firewalls)

Molti server Linux utilizzano iptables come utilità firewall predefinita. Puoi configurarlo seguendo i passaggi seguenti.

  1. Apri un terminale o una connessione SSH e digita sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Sostituisci XXXX con l'indirizzo IP del dispositivo da cui desideri consentire le connessioni MySQL da(from) , e sostituisci YYYY con il valore della porta corrispondente dal tuo file di configurazione MySQL (es. 3306 ).

  1. Questo configurerà temporaneamente il firewall. Se stai utilizzando un server Linux basato su Debian o Ubuntu , rendi permanente questa modifica digitando sudo netfilter-persistent save e sudo netfilter-persistent reload nel terminale o nella finestra SSH.

Se iptables non è lo strumento firewall predefinito per la tua distribuzione Linux , dovrai consultare il manuale utente della tua distribuzione per ulteriori informazioni. Se alcuni pacchetti (come netfilter-persistent ) non sono disponibili, usa lo strumento di repository del software della tua distribuzione per installarlo (ad es. sudo apt install netfilter-persistent ).

Configura Windows Firewall(Configure Windows Firewalls)

Se utilizzi un PC o un server Windows per ospitare il tuo database, puoi configurare il firewall seguendo questi passaggi:

  1. Fare clic con(Right-click) il pulsante destro del menu Start e selezionare Esegui(Run) .

  1. Nella casella Esegui(Run) , digita wf.msc e seleziona OK .

  1. Nella finestra di Windows Defender , seleziona (Windows Defender)Regole in entrata(Inbound Rules ) > Nuova regola(New Rule) .

  1. Nella finestra Creazione guidata nuova regola in entrata , selezionare (New Inbound Rule Wizard)Porta(Port ) > Avanti(Next) .

  1. Nel menu successivo, seleziona TCP dalle opzioni, digita 3306 (o qualsiasi valore di porta sia elencato nel file di configurazione di MySQL ), quindi seleziona (MySQL)Avanti(Next) .

  1. Nel menu Azione , lascia l'opzione predefinita su (Action)Consenti la connessione(Allow the connection) abilitata, quindi seleziona Avanti(Next) .

  1. Conferma che desideri applicare la regola a tutti i tipi di rete, quindi seleziona Avanti(Next)

  1. Digita un nome descrittivo per la regola (es. MySQL ) nella porta fornita, quindi seleziona Fine(Finish) per aggiungerla all'elenco delle regole del firewall.

Se hai problemi di connessione, ripeti questi passaggi sopra, assicurandoti di creare una nuova regola(outbound rule ) in uscita nelle impostazioni del firewall utilizzando gli stessi dettagli (porta 3306, ecc.). Potrebbe anche essere necessario configurare il router di rete locale per aprire le porte bloccate necessarie(open the necessary blocked ports) per consentire le connessioni in entrata e in uscita al database. 

Connessione a un server remoto tramite MySQL(Connecting to a Remote Server Using MySQL)

Dopo aver configurato il tuo database MySQL per consentire connessioni remote, dovrai effettivamente stabilire una connessione ad esso. Puoi farlo usando il comando mysql ( mysql.exe su Windows ) da un terminale o da una finestra di PowerShell .

Se stai utilizzando Windows , prima di iniziare dovrai assicurarti che MySQL sia installato localmente . (MySQL is installed locally)Gli utenti Mac(Mac) possono installare MySQL utilizzando homebrew(using homebrew) dal terminale ( brew install mysql ), mentre gli utenti Linux possono utilizzare il loro repository di app locale (es. sudo apt install mysql ) per installare i pacchetti necessari.

Connessione a MySQL su Linux o Mac(Connecting to MySQL on Linux or Mac)

  1. Per connetterti al tuo server MySQL remoto su Mac o Linux , apri una nuova finestra di terminale e digita mysql -u username -h XXXX:XXXX -p . Sostituisci XXXX:XXXX con l'indirizzo IP del tuo server remoto e il numero di porta (ad es. 100.200.100.200:3306 ) e il nome utente(username) con il tuo nome utente MySQL.

  1. Quando richiesto, conferma la tua password. Se la connessione riesce, sul terminale apparirà un messaggio di successo.

Connessione a MySQL su Windows(Connecting to MySQL on Windows)

  1. Per connetterti a un server MySQL remoto su Windows , apri una nuova finestra di PowerShell facendo clic con il pulsante destro del mouse sul menu Start e selezionando Windows PowerShell (Admin) .

  1. Nella nuova finestra di PowerShell, digita cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ ” per entrare nella cartella corretta, sostituendo questa directory con la directory di installazione corretta sul tuo PC. Ad esempio, se la tua versione di MySQL è 8.0.1, utilizza invece la cartella MySQL Workbench 8.0.1 .

  1. Da lì, digita .\mysql.exe -u username -h X.X.X.X:XXXX -p . Sostituisci XXXX:XXXX con l'indirizzo IP del tuo server remoto e il numero di porta (ad es. 100.200.100.200:3306 ) e il nome utente(username) con un nome utente MySQL che consente l'accesso remoto (come root ). Segui(Follow) eventuali istruzioni aggiuntive sullo schermo.
  2. Fornisci la tua password, quando richiesto, per completare il processo di accesso e accedere al tuo database MySQL da remoto.

Se ciò non funziona, connettiti al server o al PC che ospita il tuo server MySQL utilizzando SSH (o accedilo direttamente) utilizzando questi passaggi e utilizzando l' argomento -h localhost . È quindi possibile creare un account utente adatto seguendo i passaggi seguenti.

Consentire l'accesso remoto degli utenti a un database MySQL(Allowing Remote User Access to a MySQL Database)

A questo punto, dovresti essere in grado di connetterti al tuo server MySQL in remoto utilizzando l'account utente root del tuo server o un altro account utente con privilegi elevati. Poiché questo livello di accesso non è sicuro, potresti preferire creare un account più limitato per accedere al tuo database MySQL .

Questo account avrà un accesso limitato al tuo server MySQL , consentendogli di interagire solo con database selezionati. Non sarà in grado di apportare modifiche più serie, come l'accesso ad altri dati del database, la creazione di nuovi account utente, ecc. 

Avrai bisogno della capacità di accedere al tuo server MySQL da remoto. Se non puoi utilizzare il tuo account root da remoto, dovrai accedere alla shell del tuo server usando il comando mysql tramite una connessione (mysql)SSH remota o accedendo direttamente al PC o al server che ospita il server.

  1. Nella shell MySQL remota (usando lo strumento mysql ), digita CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; e seleziona Invio(Enter) . Sostituisci nome utente(username ) con il nome utente che desideri creare, xxxx con l'indirizzo IP da cui desideri connetterti e password con una password adatta.

  1. Dovrai concedere al tuo nuovo account le autorizzazioni necessarie. Per fare ciò, digita GRANT ALL ON databasename.* TO username@”x.x.x.x”; e sostituisci databasename, username e xxxx  con i dettagli corretti. Se lo desideri, sostituisci nomedatabase(databasename) con * per concedergli l'accesso a tutti i database. 

Con l'accesso concesso, usa i passaggi nella sezione precedente per connetterti al tuo server in remoto usando il tuo nuovo account (es. mysql -u username -h XXXX:XXXX -p ).

Protezione dei dati del database(Securing Your Database Data)

Che tu stia lavorando con MySQL o un altro tipo di database SQL , è importante mantenere le tue connessioni sicure per mantenere la sicurezza dei tuoi dati. Un buon modo per farlo è generare chiavi SSH per l'accesso remoto(generate SSH keys for remote access) al tuo server, piuttosto che fare affidamento su password obsolete (e facilmente intuibili).

Se sei preoccupato per la perdita di dati, puoi facilmente eseguire il backup del tuo database(back up your database) online. La maggior parte dei database viene eseguita utilizzando server Linux : puoi automatizzare facilmente un backup di file Linux(automate a Linux file backup easily) . Se stai utilizzando MySQL su Windows , puoi configurare un sistema di backup automatico simile per Windows(automatic backup system for Windows) , che ti consente di ripristinare i tuoi dati in caso di emergenza.



About the author

Sono un ingegnere software esperto, con oltre 10 anni di esperienza nello sviluppo e nella manutenzione di applicazioni Microsoft Office. Ho una forte passione per aiutare gli altri a raggiungere i loro obiettivi, sia attraverso il mio lavoro come ingegnere del software che attraverso le mie capacità di parlare in pubblico e di networking. Sono anche estremamente esperto in hardware e driver della tastiera, avendo sviluppato e testato molti di loro io stesso.



Related posts