Por defecto, el acceso remoto a un servidor MySQL está desactivado por razones de seguridad. Sin embargo a veces es necesario habilitar el acceso remoto, por ejemplo para el caso que un servidor Web Apache pueda acceder a bases de datos alojadas en un servidor MySQL remoto.

El primer paso es editar la configuración del servidor MySQL, la cual se encuentra, por ejemplo en un servidor Ubuntu Server, en el archivo /etc/mysql/my.cnf. En otras distribuciones (por ejemplo Red Hat/Fedora/CentOS) se encuentra en el archivo /etc/my.cnf.

# nano /etc/mysql/my.cnf

Dentro del archivo de configuración localizar la línea que contiene el texto [mysqld]. Debajo de esta línea editar la variable bind-address para definir en qué dirección IP atiende el servidor MySQL. Por ejemplo, si la dirección IP para conectarse al servidor de bases de datos es 192.168.1.100, debe quedar:

bind-address = 192.168.1.100

Luego asegurarse que la directiva skip-networking esté comentada:

#skip-networking

Guardar los cambios en el archivo /etc/mysql/my.cnf y reiniciar el servidor MySQL:

# /etc/init.d/mysql restart

Si se trata de Red Hat/Fedora/CentOS reiniciar mediante el comando:

# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

Para conectarse a una determinada base de datos debe existir un usuario con privilegios de acceso remoto. Conectarse al servidor MySQL localmente (se necesita la contraseña del usuario "root" de MySQL):

$ mysql -u root -p

Suponiendo que se desea permitir el acceso al usuario "pepe" a la base de datos "base1" desde el host remoto "192.168.1.101" utilizando la contraseña "pepe1234", otorgar el permiso mediante el comando GRANT de MySQL:

mysql> GRANT ALL ON base1.* TO 'pepe'@'192.168.1.101' IDENTIFIED BY 'pepe1234';

Si se desea que "pepe" pueda acceder a la base de datos "base1" desde cualquier host, utilizar:

mysql>GRANT ALL ON base1.* TO 'pepe'@'*' IDENTIFIED BY 'pepe1234';

Aunque no es una práctica recomendable desde el punto de vista de la seguridad del servidor MySQL.

Cerrar la sesión en el servidor MySQL:

mysql> quit

Adicionalmente tal vez sea necesario abrir el puerto 3306 (MySQL) en el firewall del servidor de bases de datos. Por ejemplo si la dirección IP 192.168.1.100 donde atiende el servidor MySQL está asignada a la interfaz eth1, y se desea permitir el acceso sólo al host 192.168.1.101, ejecutar:

# iptables -A INPUT -i eth1 -s 192.168.1.101 -p tcp --destination-port 3306 -j ACCEPT

Luego, si se trata de Red Hat/Fedora/CentOS, guardar la configuración del firewall mediante:

# service iptables save

Finalmente es posible verificar el acceso al servidor MySQL (192.168.1.100), desde el servidor remoto (192.168.1.101) ejecutar:

$ mysql -u pepe -h 192.168.1.100 -p


Tal vez pueda interesarte


Compartí este artículo