Image

База знаний → Настройка удаленного доступа к базе данных MariaDB

[Виртуальные сервера]
Дата публикации: 17.10.2023

По умолчанию удаленный доступ к сервису баз данных MariaDB выключен в целях безопасности. В данном руководстве мы рассмотрим настройку удаленного доступа к базе данных по ip адресу.

Предположим, что у нас есть 2 сервера, на 1 располагается некая система (сайт/crm), а на другом мы будем хранить базу данных и запрашивать данные, указав логин, пароль и ip адрес сервера.

1. Подготовка к настройке

1.1 Проверим файл конфигурации

Убедимся в том, что опция подключения не закомментирована и выглядит так:

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

...
bind-address = 0.0.0.0
...

Чтобы применить настройки, перезапустим службу

systemctl restart mariadb

1.2 Проверим доступность порта

netstat -ant | grep 3306

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

2. Настройка

mysql -u aroot -p

2.1 Создадим базу данных и пользователя

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

2.2 Разрешим подключение указав ip сервера, с которого будем подключаться

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

Данные реквизиты можно использовать для подключения:

  • base1 - База данных.
  • user1 - Пользователь.
  • password - Пароль.
  • xx.ip.xx.ip - ip адрес сервера, с которого будем подключаться.

2.3 Другие примеры

2.3.1 Разрешить получение доступа для всех баз данных с указанного ip

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

2.3.2 Разрешить подключение с любых IP адресов к базе base1

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

2.3.3 Разрешить подключение только с определенной подсети к базе base1

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

3. Настройка фаервола iptables

3.1 Разрешим только конкретный ip

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 Разрешим для всех ip

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 Разрешим для конкретной подсети

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. Проверим подключение с сервера 1

4.1 Установим клиент mariadb

apt install mariadb-client

4.2 Подключение к настроенному серверу

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)

Готово.





Нет комментариев