SCROLL
Среднее время на прочтение: 1 мин.

Разрешение удаленных подключений к MySQL/MariaDB

Для себя краткая шпаргалка как разрешить удаленный доступ как для root пользователя, так и вновь созданного пользователя.

Удаленный доступ к MySQL/MariaDB необходим, если база данных должна быть доступна с другого сервера или приложения, например:

  • при разделении базы данных и веб-сервера,
  • для администрирования с удаленной машины,
  • при использовании кластеризации или репликации.
Открытый доступ несет риски безопасности. Ограничьте подключение конкретными IP-адресами и используйте безопасные методы аутентификации.

Разрешение подключений в конфигурации

По умолчанию MySQL/MariaDB слушает только локальные подключения 127.0.0.1. Нужно изменить конфигурацию:

  • MySQL : /etc/mysql/mysql.conf.d/mysqld.cnf
  • MariaDB : /etc/mysql/mariadb.conf.d/50-server.cnf

Найти строку:

bind-address = 127.0.0.1

и заменить на:

bind-address = 0.0.0.0

Перезапустить сервер базы данных:

systemctl restart mysql  # Для MySQL
systemctl restart mariadb  # Для MariaDB

Разрешение удаленного доступа

Проверка текущих прав

Перед выдачей новых прав можно проверить текущие разрешения пользователей:

SELECT user, host FROM mysql.user;

+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
+-------------+-----------+
3 rows in set (0,001 sec)

Если в списке host указан %, значит root уже имеет доступ со всех хостов.

Разрешение доступа для root

Выдать root права на удаленное подключение:

GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

Создание нового пользователя с удаленным доступом

Создать пользователя с удаленным доступом:

CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password';

Замените remote_userи strong_password на желаемые имя пользователя и пароль.

Выдать ему права на конкретную базу данных:

GRANT ALL ON database.* TO 'remote_user'@'%';
FLUSH PRIVILEGES;

Выдать ему права на все базы:

GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
FLUSH PRIVILEGES;

Отключение удаленного доступа

Для root

Отозвать права:

REVOKE ALL PRIVILEGES ON . FROM 'root'@'%';

Для нового пользователя

Отозвать права:

REVOKE ALL PRIVILEGES ON *.* FROM 'remote_user'@'%';
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

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

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