Se si tratta di MySQL, la rete del server di database non è abilitata per impostazione predefinita. Per abilitare il networking in MySQL è necessario trovare il file di configurazione MySQL attivo denominato my.cnf
. E modificalo.
Spiegherò come farlo su Ubuntu 12.04, ma le istruzioni sono simili per la maggior parte delle installazioni di Linux.
Abilita la rete MySQL
Innanzitutto, apri il file utilizzando un editor come nano
. Potrebbe essere necessario eseguire il comando tramite sudo
:
sudo nano /etc/mysql/my.cnf
Quindi cerca l'area nel tuo file di configurazione con il bind-address
opzione:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Ora cambia quel bind-address
impostando come segue:
bind-address = 0.0.0.0
Fatto ciò, salva il file e riavvia MySQL in questo modo:
sudo service mysql restart
E ora il tuo database MySQL sarà in grado di accettare connessioni non localhost da macchine remote.
Assicurati che la porta MySQL 3306
è Aperto
Detto questo, anche con la rete abilitata, dovresti comunque controllare se sei in grado di connetterti alla macchina remota dalla riga di comando usando uno strumento di rete come nmap
. Potresti avere un firewall su 192.168.1.10
blocco della porta MySQL 3306
quindi devi controllare se è aperto o chiuso in questo modo:
nmap 192.168.1.10 -p3306
E se porta 3306
è aperto, questa sarà la risposta; nota il open
sotto STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
Ma se porta 3306
è chiuso, otterrai questo; nota il closed
sotto STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
Controlla le tue sovvenzioni utente MySQL
Ora, fatto tutto, il tuo server di database MySQL dovrebbe essere accessibile sulla rete. Ma detto questo, devi assicurarti che l'utente del database che stai utilizzando possa connettersi da una macchina remota sulla tua LAN. Quindi accedi a MySQL ed esegui questo comando per vedere quali autorizzazioni potrebbe avere l'utente:
SELECT user, host FROM `mysql`.`user`;
Questo ti mostrerà un elenco di utenti e host collegati a quegli utenti in MySQL. Il fatto è che alla maggior parte degli utenti vengono concessi privilegi di accesso solo a localhost
o 127.0.0.1
. Ad alcuni viene concesso l'host jolly di %
. Devi guardare quell'elenco e vedere se l'utente che desideri utilizzare ha un host con caratteri jolly (%
) o uno specifico indirizzo IP ad essi collegato. Puoi controllare il GRANT
di un utente s eseguendo una linea come questa; ovviamente cambia [your_database_user]
e [hostname]
per abbinare le tue impostazioni:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Questo dovrebbe mostrarti un elenco di GRANT
disponibili s per un utente su un host specifico. Se hanno GRANT
s che consentirebbe l'accesso remoto, ad esempio utilizzando il carattere jolly %
host, allora sei pronto. Se non hanno alcun GRANT
s puoi eseguire i seguenti comandi MySQL; ovviamente cambia [your_database]
e [your_database_user]
per abbinare le tue impostazioni:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
Entrambi GRANT
linee applicano un insieme abbastanza standard di diritti di accesso a un database. La prima riga li applica a qualsiasi connessione nell'intervallo di rete LAN di 192.168.x.x
. La seconda riga li applica a qualsiasi connessione nell'intervallo di rete LAN di 10.x.x.x
. Mi piace farlo per coprire tutte le basi sulle reti interne. Gli ultimi FLUSH PRIVILEGES;
fondamentalmente dice a MySQL di ricaricare le tabelle dei privilegi utente che consentono a tali sovvenzioni di avere effetto.