Come configurare l’accesso remoto a MySQL sotto Linux


Linux tips

Linux tips – Photo by JPPI, 2015, MorgueFile.com

Supponi di aver installato il server MySQL sulla tua Linux box.

Supponi di aver necessità di far accedere da remoto al server MySQL da parte di una applicazione.

Devi configurare un accesso remoto, visto che la configurazione predefinita di MySQL non lo prevede.

Nel file /etc/my.cnf devi commentare il parametro skip-network se presente e devi assegnare al parametro bind (aggiungerlo se assente) come di seguito:

bind=0.0.0.0

Se hai più schede di rete e desideri ridurre l’accesso a una singola rete, ti serve un valore più specifico di un semplice 0.0.0.0.

Supponi di voler avere l’accesso abilitato solo per la rete 192.168.0.0/24 per il server MySQL.

Basta specificare l’indirizzo IP della scheda di rete specifica della tua Linux box nel parametro bind:

bind=192.168.0.1

A questo punto il server è predisposto a ricevere connessioni “esterne” (dalla rete LAN a cui appartiene), ma l’accesso applicativo “esterno” è ancora inibito. Come procedere?

Devi creare un utente MySQL a cui assegnare i giusti permessi.

Puoi decidere se permettere l’accesso a qualunque host della rete LAN, oppure se desideri limitarti a più specifici host.

In una condizione di accesso meno restrittivo (qualunque host della rete 192.168.0.0/24 e a qualunque rete: %) puoi dare i seguenti comandi dalla console MySQL:

CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Questi comandi creano un utente mysqluser con la password aC0MPL3XPa33W0RD, utente che può accedere a MySQL da qualsiasi host della rete definita (sempre la famosa 192.168.0.0/24, ma anche tutte le altre se il valore di bind fosse 0.0.0.0).

Se invece desideri che l’utente definito sia abilitato solo per un host di provenienza specifica, allora opera in quest’altro modo.

Apri la console di MySQL e aggiungi, per esempio, l’indirizzo host 192.168.0.12. Come si apre la console MySQL? Per esempio dando il comando:

mysql -u root -p

Ti sarà chiesta la password per accedere alla console:

MySQL server will ask you a root password:
Enter password:

Una volta data la password giusta dai i comandi:

CREATE USER 'mysqluser'@'192.168.0.12' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL ON *.* to mysqluser@'192.168.0.12' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit

Questo darà accesso all’utente mysqluser a tutte le basi di dati che creerai a causa di quel *.* in GRANT ALL ON. Se non ti va bene, crea prima la base dati che desideri quell’utente acceda e poi al posto del primo * dai il nome della stessa.

Non è chiaro?
Vediamo un esempio:

CREATE DATABASE IF NOT EXISTS `miodatabase`;
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL ON `miodatabase`.* TO 'mysqluser'@'%';
FLUSH PRIVILEGES;
quit

È tutto.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

This site uses Akismet to reduce spam. Learn how your comment data is processed.