Найти в Дзене
Linux Info

Открыть удалённый доступ к MySQL/MariaDB

Здравствуйте, для удалённого подключения к базам MySQL/MariaDB, нам необходимо настроить, чтобы сама используемая СУБД прослушивала внешний порт на который будут подключаться пользователи и чтобы у пользователя были привилегии на подключение и работу в удалённом режиме.
Итак, начнём!
Ищем файл конфигурации MySQL - my.cnf и открываем его для редактирования вашим любимым редактором.
vi

Здравствуйте, для удалённого подключения к базам MySQL/MariaDB, нам необходимо настроить, чтобы сама используемая СУБД прослушивала внешний порт на который будут подключаться пользователи и чтобы у пользователя были привилегии на подключение и работу в удалённом режиме.

Итак, начнём!

Ищем файл конфигурации MySQL - my.cnf и открываем его для редактирования вашим любимым редактором.

vi /etc/mysql/my.cnf

Изменяем, добавляем, убираем или добавляем знак # , чтобы эти строки выглядели так

## skip-networking
# port = 3306
# bind-address = 0.0.0.0

skip-networking - опция которая отключает MySQL networking, то есть MySQL не будет слушать порт 3306 . Когда опция skip-networking закомментирована - опция не работает.

port = 3306 - опция указывает какой порт будет прослушивать СУБД

bind-address = 0.0.0.0 - Если строка MySQL bind-address имеет значение 0.0.0.0 (или вообще не имеет адреса), то соединения открыты на всех интерфейсах. Если строка имеет вид bind-address = 127.0.0.1, то это означает что MySQL закрыт от внешних подключений.

После внесённых изменений, перезапускаем MySQL

systemctl restart mysqld
или
service mysqld restart

Теперь необходимо дать доступ пользователю для работы с любого IP адреса.

Заходим по ssh на сервер и подключаемся к СУБД с пользователя root (или с помощью любого другого пользователя с необходимыми правами).

mysql -u root -p

Cоздаём пользователя с авторизацией с удалённого хоста

create user 'user'@'%' identified by 'password';

Обратите внимание, если указать за место % - locahost, то доступ для этого пользователя будет только с сервера

Теперь необходимо пользователю дать права на обновление и добавление записей базы данных

GRANT ALL PRIVILEGES ON namedatabase . * TO 'user'@'%';

Применяем привилегии командой

flush privileges;

Проверить соединение вы можете командой с удалённого хоста

mysql -P 3306 -h 1.2.3.4 -u user -p namedatabase

Ну вот и всё, удачи в работе!