Per norma general, la majoria de servidors només permeten que les connexions a MySQL es realitzin en local, és a dir, des del mateix servidor Cloud i no des d'un servidor o equip extern.
En els “setups” en què cal configurar MySQL en un servidor a part, per no sobrecarregar el frontal web per exemple, s'han de dur a terme algunes configuracions per poder connectar de forma remota a les bases de dades.
A continuació expliquem els passos que cal seguir per configurar aquest accés:
- Accedeix al teu servidor a través de SSH com a usuari “root” Pots trobar més informació sobre l'accés per SSH al teu servidor a l'article:: Acceder por SSH a Linux
- Has de donar privilegis d'accés remot a la base de dades que vulguis que sigui accessible utilitzant les comandes següents:
Nota
Recorda que abans de llançar la comanda has de canviar:
- “xxx.xxx.xxx.xxx“, per la IP que tindrà accés a les bases de dades
- “nom_base_de_dades” pel nom de la base de dades en qüestió
- “usuari_base_de_dades” per l'usuari que farà la connexió
# mysql -u root -p mysql> USE nom_base_de_dades; mysql> update db set Host='xxx.xxx.xxx.xxx' where db=’nom_base_de_dades‘; mysql> update user set Host='xxx.xxx.xxx.xxx' where user=’usuari_base_de_dades‘
Una alternativa a configurar manualment els privilegis a cada base de dades com hem descrit seria configurar-los per a totes les bases de dades.
Advertència
Pot suposar un problema de seguretat greu garantir privilegis sobre totes les bases de dades a l'usuari root del servidor remot. En la majoria de casos serà millor crear un usuari amb menys privilegis i que només pugui accedir a la base de dades necessària per a la connexió.
Per configurar els privilegis a totes les bases de dades caldria utilitzar les ordres següents:
mysql> GRANT ALL ON *.* to root@'xxx.xxx.xxx.xxx' IDENTIFIED BY ‘contrasenya_de_root‘; mysql> FLUSH PRIVILEGES; mysql> exit;
- Pot ser que el nostre servidor tingui configurat el servei de MySQL escoltant només per la IP 127.0.0.1 (Binding), per comprovar-ho executarem:
# netstat -tulpn | grep 'mysql\|mariadb'
Si ens respon “0.0.0.0:3306” pots passar al següent pas. Si ens respon “127.0.0.1:3306” cal canviar la configuració de MySQL per això editarem el fitxer /etc/mysql/my.cnf o /etc/my.cnf depenent la distribució de Linux que usem. Bàsicament comentarem la línia que configura el binding, pot ser una cosa semblant a
bind-address = ::ffff:0.0.0.0
Un cop comentat reiniciarem el servei de MySQL i ja podem passar al següent pas.
# service mysqld restart
- Finalment, el que hauràs de fer és habilitar el port 3306 al firewall del panell de client, has de crear una regla com aquesta: