По умолчанию удаленный доступ к сервису баз данных 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
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
Готово.
Нет комментариев