¿Cómo se habilita el acceso remoto a MySQL Database Server en Ubuntu?

El acceso remoto al servidor de base de datos MySQL está deshabilitado de forma predeterminada por razones de seguridad. Sin embargo, a veces es necesario proporcionar acceso remoto al servidor de base de datos de casa o de un servidor web.

Inicio de sesión mediante SSH
En primer lugar, inicio de sesión sobre ssh al MySQLservidor remoto de base de datos:
$ ssh usuario@servidordestino

Editar archivo my.cnf
Una vez conectado le necesita para editar el MySQL configuración de servidor de archivos my.cnf utilizando por ejemplo un editor de texto como vi.
Está situado en la ubicación de /etc/mysql/my.cnf

Para editar /etc/my.cnf, ejecuta:
$ vi /etc/my.cnf

Localiza la línea en [mysqld]
Asegúrate de que está comentada o quitala y se añade el siguiente línea:

bind-address=IP-DE-TU-SERVIDOR

Guardar y cerrar el archivo
Reinicia el servidor de mysql, escribe:
$ /etc/init.d/mysql restart

Otorgar acceso a la dirección IP remota
Conectarse al servidor de mysql:
$ mysql -u root -p mysql

Conceder acceso a una base de datos existente
Vamos a suponer que siempre se realiza la conexión desde la IP remota 192.168.1.20 para base de datos denominada webdb para usuario webadmin. Para otorgar acceso a esta dirección IP escribe el siguiente comando en mysql > :

mysql> update db set Host='192.168.1.20' where Db='webdb';
mysql> update user set Host='192.168.1.20' where user='webadmin';
mysql> exit

Abrir puerto 3306
Es necesario abrir el puerto TCP 3306 usando reglas de iptables.

Podemos permitir el acceso general:
$/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

Permitirlo solo desde la IP 172.31.2.28
$/sbin/iptables -A INPUT -i eth0 -s 172.31.2.28 -p tcp --destination-port 3306 -j ACCEPT

O desde una subred 192.168.1.0/24
$/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT

Salvamos las reglas nuevas
$service iptables save

Probamos la conexión
$ mysql -u webadmin –h 49.132.5.68 –p

  • -u webadmin: webadmin es el nombre de usuario de MySQL
  • -h IP o el nombre de host: 49.132.5.68 es la dirección IP del servidor MySQL o nombre de host (FQDN)
  • -p: solicitar contraseña

o mediante telnet
$ telnet 49.132.5.68 3306