back to top

Configurare MySQL per accettare connessioni remote

La versione classica di MySQL Server ha, per evidenti ragioni di sicurezza, una caratteristica molto restrittiva: non accetta connessioni sulla porta 3306 (la porta a cui risponde MySQL) se non da localhost! Questa caratteristica può essere un problema se abbiamo l’esigenza di rendere disponibile il DBMS all’interno di una Rete: il caso tipico è quello di una configurazione su due macchine separate, una per il sito e l’altra per il database.

In una situazione del genere diventa fondamentale configurare MySQL per accettare connessioni remote.

Modificare il file my.cnf

Per consentire a MySQL di accettare connessioni remote sulla porta 3306 è necessario impostare, all’interno del file my.cnf, il parametro bind-address il quale viene utilizzato dal DBMS per accettare o meno i tentativi di connessione effettuati via TCP/IP.

In genere, come detto, quando si installa un server MySQL, esso viene configurato per accettare connessioni esclusivamente dall’IP della macchina ospitante (localhost), per cui la direttiva di riferimento è settata di default in questo modo:

bind-address=127.0.0.1

Come sappiamo l’IP 127.0.0.1 corrisponde, infatti, all’indirizzo convenzionale della macchina locale.

Accettare connessioni da uno specifico IP

Ma se volessimo invece accettare connessioni TCP/IP da un determinato identificatore univoco di Rete, potremmo impostare il bind-address attraverso la seguente specifica, dove "123.123.123.123" non è altro che una stringa d’esempio che sostituisce l’IP desiderato:

bind-address=123.123.123.123

Così facendo il nostro server MySQL accetterà connessioni provenienti dall’IP 123.123.123.123. Ogni altro tentativo di connessione effettuato da un IP differente, ovviamente, verrà rifiutato.

Accettare tutte le connessioni remote

Se poi la nostra intenzione fosse quella di accettare tutte le connessioni lanciate verso il DBMS locale, indipendentemente dal terminale d’invio, allora il bind-address dovrà essere associato al parametro "0.0.0.0" che rappresenta arbitrariamente qualsiasi indirizzo IP;

bind-address=0.0.0.0

Naturalmente, tutte le modifiche al file "my.cnf" cominceranno a diventare operative soltanto dopo che il server MySQL sarà stato riavviato.

Abilitare utenti remoti

Dopo aver effettuato la modifica alla configurazione di MySQL sarà necessario creare un utente in grado di connettersi da remoto al database utilizzando l’istruzione SQL GRANT. Di seguito una query di esempio che suppone l’esistenza di un database "mioDB" ed un utente "mioUSER" (se non avete ancora creato un database ed un utente, dovete farlo preliminarmente).

GRANT ALL privileges ON mioDB.* TO 'mioUSER'@'mioIP' IDENTIFIED BY 'miaPassword';

Si noti che è possibile creare utenti la cui operatività sul DBMS è vincolata all’utilizzo di specifici IP. Qualora si volesse consentire ad un dato utente di accedere indipendentemente dall’utilizzo o meno di un IP Address si userà la seguente sintassi:

GRANT ALL privileges ON mioDB.* TO 'mioUSER'@'%' IDENTIFIED BY 'miaPassword';

Come potete vedere l’indicazione dell’IP è stata sostituita dal simbolo della percentuale (%) che, nello specifico, equivale a "oggi postazione di connessione".

Affinchè le modifiche ai permessi di accesso abbiano effetto sarà necessario lanciare il comando:

FLUSH PRIVILEGES;
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).
Articolo precedente
Articolo successivo

In questa guida...