Image

Base de conocimientos → Configurar el acceso remoto a la base de datos MariaDB

[Servidores virtuales]
Fecha de publicación: 17.10.2023

De forma predeterminada, el acceso remoto al servicio de base de datos MariaDB está deshabilitado por razones de seguridad. En esta guía veremos cómo configurar el acceso remoto a una base de datos por dirección IP.

Supongamos que tenemos 2 servidores, en 1 hay un determinado sistema (sitio/crm), y en el otro almacenaremos una base de datos y solicitaremos datos especificando el nombre de usuario, contraseña y dirección IP del servidor.

1. Preparación para la instalación

1.1 Revisemos el archivo de configuración

Asegurémonos de que la opción de conexión no esté comentada y se vea así:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

...
bind-address = 0.0.0.0
...

Para aplicar la configuración, reinicie el servicio.

systemctl restart mariadb

1.2 Verificar disponibilidad de puerto

netstat -ant | grep 3306

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

2. Configuración

mysql -u root -p

2.1 Crear una base de datos y un usuario

CREATE DATABASE base1;
CREATE USER  'user1'@'localhost' IDENTIFIED BY 'password';

2.2 Permitamos la conexión especificando la IP del servidor desde el que nos conectaremos

GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Estos detalles se pueden utilizar para conectarse:

  • base1 - Base de datos.
  • usuario1 - Usuario.
  • password - Contraseña.
  • xx.ip.xx.ip - Dirección IP del servidor desde el que nos conectaremos.

2.3 Otros ejemplos

2.3.1 Permitir el acceso a todas las bases de datos desde la ip especificada

GRANT ALL ON *.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.2 Permitir conexiones desde cualquier dirección IP a base1

GRANT ALL ON base1.* to 'user1'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.3 Permitir conexiones solo desde una subred específica a base1

GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

3. Configurar un firewall de iptables

3.1 Permitamos solo una ip específica

iptables -A INPUT -p tcp -s xx.ip.xx.ip --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.2 Permitamos todas las ips

iptables -A INPUT -p tcp -m tcp --dport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.3 Permitir una subred específica

iptables -A INPUT -p tcp -s xx.ip.xx.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

4. Comprobemos la conexión desde el servidor 1.

4.1 Instalar el cliente mariadb

apt install mariadb-client

4.2 Conexión a un servidor configurado

mysql -u wpuser -h ip.xx.ip.xx -p

Enter password:

MariaDB [(none)]> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| base1              |
+--------------------+
2 rows in set (0.10 sec)

Listo.





Sin comentarios aún