Что такое MySQL и зачем может понадобиться удаленный доступ к нему
MySQL — широко известная система управления базами данных. Наиболее часто эта служба используется так, что и базы данных, и все прочие файлы проекта хранятся на одном и том же сервере. При таком раскладе вполне можно предоставлять только локальный доступ, более того, по соображениям безопасности именно так и следует сделать. Но в случае использования многосерверной инфраструктуры настройки потребуется изменить.
Подготовительный этап
Чтобы разрешить доступ к своим базам данных потребуется:
- Сервер, управляемый актуальной операционной системой (например, Ubuntu 20.04);
- Доступ к системной учетной записи «root»;
- Привилегированный доступ к сервису управления базами данных.
Разблокировка доступа к 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 и удаленно управлять размещенными там данными.