Que es MySQL y por qué podría ser necesario el acceso remoto
MySQL es famoso sistema de gestión de bases de datos. El caso de uso frecuente: la base de datos y otros archivos de proyecto se almacenan en el mismo servidor. Por lo tanto, restringir el acceso desde el host local solo es normal, no es necesario permitir el acceso a la red por razones de seguridad. Pero si tiene una infraestructura de varios servidores, debe cambiar la configuración predeterminada.
Requisitos
Para permitir el acceso "externo" al servidor de la base de datos, necesita:
- Servidor bajo el sistema de operación real (por ejemplo, Ubuntu 20.04);
- Acceso a la cuenta del sistema "raíz";
- Acceso privilegiado al servicio de la base de datos o posibilidad de cambiar el permiso de la base de datos.
Desbloqueo de acceso a la red
Para permitir conexiones "externas" al servidor de la base de datos, siga estos pasos:
Inicie sesión en su servidor como usuario privilegiado y asegúrese de qué puerto está utilizando MySQL:
netstat -tlnp | grep my
Como vemos, el puerto principal es 3306. Permitámoslo en firewall ajustes:
ufw allow 3306
Encuentre el archivo de configuración cuya dirección de escucha está declarada:
grep -r "bind" /etc/mysql/
Reemplaza Dirección de enlace valor de la directiva a 0.0.0.0 y verifique el resultado:
sed -i.bak -e 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep bind
Reinicie el servicio:
service mysql restart
El siguiente paso es opcional. Puede autenticarse en la base de datos como usuario existente o especialmente crear uno nuevo y otorgarle privilegios:
mysql # enter to the service
CREATE USER <username>; # new account creation
ALTER USER <username> IDENTIFIED WITH mysql_native_password BY '<password>'; # set password
GRANT ALL ON testdb.* TO remoteuser; # grant permissions
FLUSH PRIVILEGES; # apply privileges
Comprobación de acceso
Para verificar el resultado, inicie sesión en la consola del servidor remoto y ejecute:
mysql -h <database_server_IP> -u<login> -p
Luego escriba o pegue la contraseña de su base de datos para "caer" en el servidor de la base de datos.
Ahora puede, por ejemplo, mirar el contenido de la base de datos:
show databases;
show tables in <database_name>;
select * from <database_name>.<table_name>;
Resumen
Después de leer este artículo, sabía cómo acceder a conexiones externas a su MySQL servidor y administrar sus datos de forma remota.