L’accesso remoto a MySQL è disabilitato di default per motivi di sicurezza, in alcuni casi è però possibile che sia necessario abilitarlo.
L’abilitazione dell’accesso da remoto a MySQL è piuttosto semplice, vediamo nel dettaglio le operazioni da eseguire.
Come prima cosa è necessario accedere al server su cui è in esecuzione MySQL e aprire il file di configurazione my.cnf.
La posizione di questo file può cambiare a seconda della distribuzione Linux che si utilizza, nel nostro caso facciamo riferimento a Centos e quindi lo troviamo in /etc/my.cnf.
vi /etc/my.cnf
Dopo che si è aperto il file, bisogna individuare la sezione [mysqld] e aggiungere la riga bind-address=<indirizzo ip del server>.
Dopo le modifiche, il file my.cnf sarà quindi simile al seguente.
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=1.1.1.1
Nel caso nel file fosse presente la riga skip-networking, bisogna cancellarla o commentarla.
Questa opzione specifica infatti che MySQL non ascolta le connessioni tcp/ip e le operazioni vengono eseguite attraverso socket Unix.
Una volta effettuate le modifiche, è possibile salvare il file e riavviare mysql.
/etc/init.d/mysql restart
A questo punto il server mysql è configurato per accettare connessioni da altri computer, è necessario però assegnare i permessi all’utente che sarà utilizzato per connettersi da remoto.
Come prima cosa si esegue la connessione al server mysql
mysql -u root -p mysql
In questo esempio ipotizziamo di dovere abilitare l’accesso a un nuovo database chiamato prova per l’utente user1 che si connette dall’indirizzo ip 2.2.2.2 e per cui la password è PASSWORD.
mysql> CREATE DATABASE prova;
mysql> GRANT ALL ON prova.* TO user1@’2.2.2.2′ IDENTIFIED BY ‘PASSWORD’;
Dopo che si è eseguito questo comando, l’utente specificato potrà connettersi da remoto al server mysql.
Un’ultima cosa da considerare è la presenza di firewall, in una situazione di questo tipo è necessario creare una regola iptables che permetta l’accesso alla porta 3306 dall’indirizzo specificato
/sbin/iptables -A INPUT -i eth0 -s 2.2.2.2 -p tcp –destination-port 3306 -j ACCEPT
Per testare il funzionamento delle modifiche, basta eseguire il seguente comando dal computer da cui si vuole effettuare l’accesso remoto al server mysql.
mysql -u user1 -h 1.1.1.1 -p
Abilitare l’accesso remoto a mysql può risultare necessario quando il server web e il server mysql non si trovano sullo stesso computer.
Risulta importante cercare di limitare al massimo le connessioni remote possibili per evitare problemi di sicurezza.