El ecosistema de software no es nuevo en la noción de sistemas distribuidos. No necesita estar físicamente presente para interactuar con su software alojado de forma remota.
Por lo tanto, su MySQL no necesita residir en una máquina local para que usted se beneficie completamente de sus características funcionales. Ahora puede tener MySQL ejecutándose en un servidor dedicado remoto y aún así tener garantizado el mismo rendimiento y seguridad de la base de datos que en el caso de MySQL ejecutándose en una máquina local/de escritorio.
Esta guía de artículo nos guiará a través de la configuración y habilitación del acceso remoto a un MySQL servidor en Linux. En el servidor/máquina remota que aloja su MySQL software de base de datos, debemos realizar algunos pasos de configuración para que permita el acceso de usuarios remotos autenticados.
Crear un nuevo usuario de MySQL
Es recomendable trabajar con un usuario remoto que no sea root MySQL usuario ni vinculado al servidor remoto que aloja el MySQL software de base de datos.
Accede a tu MySQL remoto servidor y base de datos a través de SSH .
$ ssh [email protected] $ mysql -u root -p
Para crear un nuevo usuario de MySQL, nos apegaremos a la sintaxis del comando:
CREATE USER 'username'@'%' IDENTIFIED BY 'your_user_password';
Como habrás notado, estamos usando la notación ‘username’@’%’ y no ‘nombre de usuario’@’localhost’ ya que queremos que este usuario sea lo suficientemente dinámico para acceder a MySQL servidor desde cualquier otra máquina host con una dirección IP diferente.
mysql> CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password1122';
Otorguemos a este usuario algunos privilegios de base de datos. Por ejemplo, este usuario puede tener los mismos privilegios de base de datos que el usuario raíz, solo que el usuario raíz está vinculado a la máquina host.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; mysql> FLUSH PRIVILEGES; mysql> exit;
[ También te puede interesar:Cómo crear un nuevo usuario de MySQL a través de phpMyAdmin ]
Habilitar acceso remoto a MySQL
Ahora que hemos creado el usuario remoto, es hora de realizar algunos cambios de configuración adicionales. De forma predeterminada, la dirección de vinculación de MySQL es 127.0.0.1 lo que implica que solo los usuarios de localhost pueden interactuar con la base de datos MySQL.
Para dar acceso a las direcciones IP de otros usuarios a su servidor de base de datos, navegue y abra el archivo de configuración de MySQL.
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf OR $ sudo vi /etc/my.cnf
Para permitir el acceso remoto a su servidor de base de datos MySQL, los campos bind-address y mysqlx-bind-address necesita ser comentado. Estos cambios de configuración evitarán que el servidor que aloja el software de la base de datos MySQL dependa únicamente de las conexiones localhost (127.0.0.1). Posteriormente, cualquier dirección IP podrá acceder a él.
Guarde y cierre el archivo.
Reinicie su servidor MySQL y luego identifique la dirección IP del servidor MySQL.
$ sudo systemctl restart mysql $ ifconfig
Intento de acceso remoto a la base de datos MySQL
Para conectarse directamente a MySQL servidor de base de datos de forma remota, siga la siguiente sintaxis de MySQL:
$ mysql -u username -h mysql_server_ip_adress -p
En nuestro caso, el comando se verá así:
$ mysql -u remote_user -h 192.168.50.130 -p
Si se encuentra con el error anterior como se muestra en la captura de pantalla, deberá configurar su usuario de MySQL para usar una contraseña nativa. Vuelva a iniciar sesión en su servidor MySQL a través de SSH e implemente el comando:
mysql> ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password1122'; mysql> exit;
Luego, salga del shell de la base de datos MySQL y reinicie el demonio MySQL.
$ sudo systemctl restart mysql
Vuelva a intentar el acceso remoto a su servidor MySQL.
$ mysql -u remote_user -h 192.168.50.130 -p
Y así, puede obtener acceso directo y remoto a un servidor de base de datos MySQL desde una computadora cliente remota configurada con una dirección IP de su elección.
Habilitar el acceso remoto a MySQL en el cortafuegos
Si tiene un firewall habilitado en su servidor remoto, es posible que deba otorgar acceso al puerto predeterminado de MySQL 3306 y conceder acceso a remote_ip_address
como se muestra.
Cortafuegos UFW
$ sudo ufw allow from remote_ip_address to any port 3306
CortafuegosD
$ sudo firewall-cmd --new-zone=mysqlrule --permanent $ sudo firewall-cmd --reload $ sudo firewall-cmd --permanent --zone=mysqlrule --add-source=remote_ip_address $ sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp $ sudo firewall-cmd --reload
Iptables
$ sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT $ sudo iptables -A INPUT -p tcp -s remote_ip_address --dport 3306 -j ACCEPT
¡Eso es todo! En este artículo, ha aprendido información útil sobre las ideas comunes del acceso remoto a MySQL en Linux.