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
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
Listo.
Sin comentarios aún