Può capitare a volte che sia necessario connettersi a mysql da remoto, pensiamo ad esempio a un sistema in cui il webserver e il server sql risiedano su due macchine differenti.
Dobbiamo quindi permettere al webserver di connettersi in remoto (o anche all’interno della stessa LAN), al server di mysql, per far questo dobbiamo editare il file my.cnf di mysql.
Il sistema che ho utilizzato è ubuntu server 8.04. Ipotizziamo di dover abilitare le connessioni per il nostro server, la macchina che hosta il servizio di mysql avrà indirizzo ip 172.16.46.251.
Editiamo il file
nano /etc/mysql/my.cnf
a questo punto cerchiamo la riga contentente
bind-address = 127.0.0.1
e sostiuiamola con
bind-address = 172.16.46.251
ed il gioco è fatto, non abbiamo fatto altro che cambiare il bind del servizio in modo che si mettesse in ascolto sull’ip pubblico invece che solo sul localhost.
Ricordate che dovete anche modificare i permessi di accesso sui database, in quanto sui database già creati l’accesso è consentito solamente da 127.0.0.1.
Se per ipotesi volete permettere connessioni remote dall’ip 172.16.46.250 sul database ‘mysql’ con l’utente root, dovrete eseguire i seguenti comandi
[email protected] # mysql
mysql > use mysql;
mysql> update db set Host='172.16.46.250' where Db='mysql';
mysql> update user set Host='172.16.46.250' where user='root';
mysql> flush privileges;
Ora dovreste potervi connettere in remoto da mysql, vi ricordo inoltre che se volete usare phpmyadmin dovrete ricordarvi di modificare l’indirizzo ip del server direttametne dal file di configurazione, cambiando quindi l’ip anche li da 127.0.0.1 all’ip che vi interessa, nello specifico del nostro esempio 172.16.46.251.
Saluti
Matteo
12 risposte a “Abilitare connessioni remote su mysql”
ciao, vorrei kiederti un aiuto. Ho un PowerBook G4 con Osx 10.4, sono collegato ad internet tramite Airpot, prendendo la rete da un pc collegato con la Lan.
Ho istallato mysql,poi ho digitato
volo:/usr/local/mysql/bin mirdog$ ./mysqladmin -u root -p status
Enter password:
e poi mi é apparso
./mysqladmin: connect to server at ‘localhost’ failed
error: ‘Access denied for user ‘root’@’localhost’ (using password: YES)’
Come posso risolvere questo problema?????
Grazie mille in anticipo.
Ciao.
Ale
Ciao il server mysql risiede sulla stessa macchina dove gira MaxOsx ?
ciao ho lo stesso problema leggi qui mi hanno consigliato loro la tua guida http://forum.ubuntu-it.org/index.php?topic=253552.new;topicseen mi succede ora che quando faccio il secondo comando mi esce
mysql> update user set Host=’91.121.11.188′ where user=’root’;
ERROR 1062 (23000): Duplicate entry ‘91.121.11.188-root’ for key 1
che posso fare?
Significa che c’è già una entry associata a quell’utente li che riguarda quel particolare indirizzo IP, prova ad accedere via PhpMyadmin o tool simile dovresti vedere fra i privilegi questa entri ed eventualmente modificarla o aggiungerne una appropriata.
non ho installato PhpMyadmin ancora qualche consiglio su come installarlo?
Una guida molto semplice per Phpmyadmin la puoi trovare qua
http://php.html.it/guide/lezione/2561/installazione-e-configurazione-base-di-phpmyadmin/
Una domanda, ma visto che ti da quell’errore, che quindi risulta già permesso un accesso su quell’ip li se tu fai
mysql -u root -p –host=91.121.11.188
cosa ti dice?
Hai dato qualcosa di analogo a
mysql> update db set Host=’91.121.11.188′ where Db=’mysql’;
in modo da poter fare query in remoto sul db mysql?
ho messo debian ora appena faccio ti so dire ubuntu non mi convince molto
Buh a me non da problemi nessuna delle due.
Ho provato a fare una reinstallazione con una versione di ubuntu a 64bit, in effetti da anche a me quell’errore. Ho provato a fregarmene e pare funzionare lo stesso, evidentemente in alcuni sistemi o versioni particolari provvedere già lui a inserire tale regola.
Molto utile la spiegazione riguardante SQL, proprio su mySQL verte il mio dubbio.
Perche io non riesco a collegarmi se dal prompt scrivo (sudo mysql)?
Ho dovuto creare questo script Bash allo scopo.
#!/bin/bash
sudo /etc/init.d/mysql restart
wait 3
sudo netstat -tap | grep mysql
wait 3
clear
mysql -u root -p
Molto semplice.
Ciao,
nel caso invece si volesse accedere sia da localhost che da ip esterno?
Grazie
Diego
Ciao Diego,
lo gestisci tranquillamente con i privilegi di mysql.