Acceso remoto a servidor Mysql


Para acceder remotamente a un servidor Mysql lo mejor es usar ssh y hacerlo en local desde la shell pero en los casos en que tengamos que conectar necesariamente desde otro host lo podemos hacer de la siguiente forma:

1.- Editamos (/etc/mysql/my.cnf en Debian, /etc/my.cnf en CentOS) y ponemos la bind-address como la IP del propio servidor. Reiniciar el servicio mysql. Esto hará que escuche en el puerto 3306 del propio servidor en vez de sólo el bucle local localhost.

bind-address = ip_servidor

Si está presente la directiva skip-networking hay que comentarla

2.- Crear un usuario remoto. Entar en mysql y hacer

GRANT ALL ON nombre_db.* TO 'usuario'@'ip-usuario' IDENTIFIED BY 'password';

O si queremos otorgar acceso remoto a root:


GRANT ALL PRIVILEGES on *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;


3.- Abrir el puerto 3306 con iptables,
#iptables -A INPUT -i eth0 -s ip_remota -p tcp --destination-port 3306 -j ACCEPT
#service iptables save
O bien, si usamos ufw,
sudo ufw allow proto tcp from ip/mascara to any port 3306