Настройка удаленного подключения к MySQL (MariaDB) базе

  • Михаил
  • 12 мин. на прочтение
  • 856
  • 19 Jan 2023
  • 20 Jan 2023

В Linux демон MySQL после установки настроен сразу только на локальное подключение. MySQL разрешает подключения только на интерфейсе 127.0.0.1. Чаще всего MySQL устанавливается рядом с web-сервером и подключение к нему происходит локально.

В редких случаях необходимо разрешить подключение для локальной сети или еще реже из любого места.

Чтобы настроить удаленное подключение к MySQL необходимо выполнить 3 шага:

  1. разрешить MySQL слушать не только 127.0.0.1;
  2. добавить пользователю право подключаться не с localhost.
  3. настроить файрвол

Первым делом проверим, как опубликован демон

netstat -an

Отлично, половина дела сделано. А если нет?, то

Настраиваем MySQL

Открываем основной конфигурационный файл MySQL:

sudo vim /etc/mysql/my.cnf

Находим строчку и комментируем:

...
# bind-address = 127.0.0.1

Это укажет демону принимать входящие соединения с любых интерфейсов.

Если нужно разрешить подключение только с ЛВС, то указываем IP-адрес сервера. К примеру bind-address = 192.168.0.25, где 192.168.0.25 — адрес нашего сервера с БД.

Далее перезапускаем демон БД:

sudo service mysqld restart

Обновляем права пользователя

Подключаемся к БД, и даем права пользователю

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.11.21' IDENTIFIED BY 'P@ssw0rd';

Доступ отовсюду, но так делать не стоит!!!

RENAME USER 'root'@'localhost' TO 'root'@'%';
FLUSH PRIVILEGES;

Первая команда добавит пользователю root возможность подключаться c любого адреса. Вторая команда применит новые права.

Если Вы хотите ограничить подключение к MySQL только локальной сетью, последние команды должны быть такими:

RENAME USER 'root'@'localhost' TO 'root'@'192.168.0.*';
FLUSH PRIVILEGES;

Настраиваем файрвол

Обязательно настраиваем firewall

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload