Cómo configurar un servidor de base de datos MariaDB 15.1 (válido para MySQL) en sistema operativo Linux Debian 11.7.0 para permitir conexiones externas (remotas). El procedimiento es válido para otras distribuciones de Linux basadas en Debian (Ubuntu, Mint, etc.) y muy similar para el resto de distribuciones Linux.
- Requisitos para habilitar acceso externo remoto a MariaDB MySQL en Linux Debian 11.
- Crear usuario en MariaDB MySQL para acceso remoto.
- Configurar MariaDB/MySQL en Linux Debian para permitir conexiones remotas.
- Acceso remoto a MariaDB MySQL desde otro equipo Linux con mariadb_client.
Requisitos para habilitar acceso externo remoto a MariaDB MySQL en Linux Debian 11
Necesitaremos disponer de un equipo con Linux Debian 11 (proceso válido para otras distribuciones basadas en Debian como Ubuntu, Mint, Deepin, SteamOS, MX, Kali, Knoppix, etc. En el siguiente enlace mostramos cómo instalar Linux Debian 11:
Dispondremos de MariaDB Server en el equipo. En el siguiente enlace explicamos cómo instalar MariaDB Server en Linux Debian 11:
Si el equipo Linux tiene el cortafuegos activado, deberemos abrir el puerto que estemos usando para MariaDB/MySQL, por defecto el 3306. Por ejemplo, para abrir el puerto 3306 para todos los equipos de la red, usaremos el comando:
1 |
sudo ufw allow 3306 |
Lo ideal y más seguro es abrir solo IP o rangos de IP que realmente vayan a necesitar acceso al servidor de MariaDB y no todos. Por ejemplo, para abrir el puerto 3306 únicamente al equipo con IP 192.168.1.100 usaremos:
1 |
sudo ufw allow from 192.168.1.100 to any port 3306 |
Para permitir el acceso por el puerto 3306 para todos los equipos de una red (por ejemplo para la red 192.168.1.0/24), usaremos:
1 |
sudo ufw allow from 192.168.1.0/24 to any port 3306 |
Si hemos hecho cambios en el cortafuegos y queremos aplicarlos sin reiniciar el equipo, ejecutaremos el comando:
1 |
sudo ufw reload |
Crear usuario en MariaDB MySQL para acceso remoto
Para crear un usuario, desde la línea de comandos de Linux, accederemos al shell de MariaDB, con el comando:
1 |
mysql -u root -p -h localhost |
Nos solicitará la contraseña del usuario root (el que se crea con la instalación de MariaDB/MySQL).
Para crear un usuario llamado «alonso», con privilegios de acceso y modificación (permitiendo consultas DDL tipo CREATE, DROP, ALTER y DML tipo SELECT, INSERT, UPDATE, DELETE) sobre la base de datos «proyectoa», y permitiendo la conexión desde equipos con IP del rango 192.168.1.0, ejecutaremos:
1 |
grant all on proyectoa.* to 'alonso'@'192.168.1.%' identified by'contraseña' with grant option; |
Ejecutaremos el siguiente comando para aplicar los cambios de privilegios:
1 |
flush privileges; |
Y saldremos del shell de MariaDB/MySQL con:
1 |
exit |
El comando anterior creará el usuario «alonso» en MySQL, con la contraseña «contraseña» y con acceso a la base de datos «proyectoa». Este usuario únicamente podrá acceder desde equipos con IP 192.168.1.x, siendo x desde 1 a 255.
Configurar MariaDB/MySQL en Linux Debian para permitir conexiones remotas
A continuación, modificaremos el fichero /etc/mysql/mariadb.conf.d/50-server.cnf con
1 |
nano /etc/mysql/mariadb.conf.d/50-server.cnf |
También podemos editar el fichero /etc/mysql/my.cnf (producirá el mismo efecto).
Si contiene la línea:
bind-address = 127.0.0.1
La comentaremos añadiéndole una almohadilla delante (#). Y añadiremos la línea:
bind-address = 0.0.0.0
Con la línea anterior permitiremos el acceso a MariaDB desde cualquier IP. Lo ideal, por seguridad, es restringir las conexiones a un rango de direcciones IP. De todas formas, no es obligatorio si hemos creado el usuario de MariaDB permitiendo la conexión sólo desde un rango de direcciones IP y, además, tenemos activado el cortafuegos para Debian (ufw) y lo hemos configurado para permitir únicamente conexiones desde este rango y el puerto de MariaDB.
Guardaremos los cambios pulsando Control + O y cerraremos la edición pulsando Control + X.
Reiniciaremos el servicio de MariaDB para aplicar los cambios, con el comando:
1 |
sudo service mariadb restart |
Probaremos el acceso externo con algún cliente de MySQL o MariaDB, por ejemplo usando MySQL Workbench:
Al introducir los datos de conexión y pulsar en «Test Connection», el cliente nos advertirá de que estamos accediendo a un servidor de base de datos no compatible. Responderemos «Continue Anyway»:
Si todo es correcto, se realizará la conexión con el servidor de MariaDB Server en Linux Debian 11:
Accediendo, podremos ver las tablas de la base de datos «proyectoa» y sus registros:
Acceso remoto a MariaDB MySQL desde otro equipo Linux con mariadb_client
Para acceder de forma externa/remota desde otro equipo con Linux, instalaremos el cliente de MariaDB con el comando:
1 |
sudo apt-get install mariadb-client -y |
Una vez instalado el cliente, accederemos al equipo con MariaDB Server con el siguiente comando:
1 |
mysql -u alonso -h 192.168.1.125 -p |
En el ejemplo anterior, conectaremos con el servidor de MariaDB con IP 192.168.1.125, con el usuario «alonso» creado anteriormente. Nos solicitará la contraseña del usuario, la introduciremos, pulsaremos INTRO y ya tendremos acceso al cliente de MariaDB. Desde aquí podremos realizar cualquier tarea en el servidor de base de datos:
Para mostrar las bases de datos (catálogos) del servidor:
1 |
show databases; |
Para acceder a una base de datos (por ejemplo a «proyectoa»):
1 |
use proyectoa; |
Para mostrar las tablas de la base de datos:
1 |
show tables; |
Para mostrar los registros de una tabla (por ejemplo «facturas»):
1 |
select * from facturas; |