15.11.2022

Организация удаленного доступа к серверу MySQL

Что такое MySQL и зачем может понадобиться удаленный доступ к нему

MySQL — широко известная система управления базами данных. Наиболее часто эта служба используется так, что и базы данных, и все прочие файлы проекта хранятся на одном и том же сервере. При таком раскладе вполне можно предоставлять только локальный доступ, более того, по соображениям безопасности именно так и следует сделать. Но в случае использования многосерверной инфраструктуры настройки потребуется изменить.

Подготовительный этап

Чтобы разрешить доступ к своим базам данных потребуется:

Разблокировка доступа к MySQL извне

Чтобы разрешить «внешние» подключения к серверу базы данных, выполните следующие действия:

Войдите на свой сервер как привилегированный пользователь и уточните, какой именно сетевой порт использует MySQL:

netstat -tlnp | grep my

Как видим, прослушивается TCP-порт 3306. Разрешим доступ к нему в настройках брандмауэра:

ufw allow 3306

Далее нужно найти, в каком именно из файлов, описывающих настройки MySQL, объявлен адрес, прослушиваемый службой:

grep -r "bind" /etc/mysql/

Замените значение директивы bind-address на 0.0.0.0 и проверьте результат:

sed -i.bak -e 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep bind

Перезапустите службу:

service mysql restart

Следующий шаг не является обязательным. Вы можете аутентифицироваться в сервисе как существующий пользователь или же создать новый аккаунт и предоставить ему соответствующие привилегии:

mysql  # вход в консоль управления сервисом
CREATE USER <имя_пользователя>;  # создание учетной записи
ALTER USER <имя_пользователя> IDENTIFIED WITH mysql_native_password BY '<пароль>';  # установка пароля
GRANT ALL ON <имя_базы_данных>.* TO <имя_пользователя>;  # предоставление привилегий
FLUSH PRIVILEGES;  # применение сделанных изменений

Проверка доступности службы

Чтобы проверить результат проделанных действий, войдите в консоль «удаленного» сервера и выполните команду:

mysql -h <IP_сервера_БД> -u<имя_пользователя> -p

Затем введите или вставьте скопированный ранее в буфер пароль от созданной учетной записи, чтобы попасть на сервер управления базами данных.
Теперь можно, например. посмотреть на содержимое базы:

show databases;
show tables in <имя_базы_данных>;
select * from <имя_базы_данных>.<имя_таблицы>;

Краткие итоги

После прочтения этой статьи вы узнали, как получить доступ извне к вашему серверу MySQL и удаленно управлять размещенными там данными.