По умолчанию сервер MySQL разрешает только локальные подключения, то есть выполняемые с сервера, на котором он работает.
Если же требуется подключаться к MySQL извне, со сторонних адресов, необходимо выполнить следующее:
Работать с удаленной базой данных можно с криптографической защитой данных или без нее. Это зависит от задачи, которую предстоит решать. Соединение возможно как вручную из операционок Linux и Windows, так и автоматически при наличии в приложении соответствующего кода. Вопрос, как подключиться к локальному серверу MySQL, имеет то же решение. Отличие составляет лишь адрес, который понадобится указать в командах.
- Что такое MySQL и зачем может понадобиться удаленный доступ к нему
- Шаг 1. Редактирование конфигурационного файла
- Сколько подключений к БД доступно
- Создание внешнего пользователя MySQL
- Подготовительный этап
- Шаг 2. Создание пользователя MySQL
- Через phpMyAdmin
- Способы, доступные пользователю
- Подключение из разных операционных систем
- Разблокировка доступа к MySQL извне
- Проверка доступности службы
- Краткие итоги
Что такое MySQL и зачем может понадобиться удаленный доступ к нему
MySQL — широко известная система управления базами данных. Наиболее часто эта служба используется так, что и базы данных, и все прочие файлы проекта хранятся на одном и том же сервере. При таком раскладе вполне можно предоставлять только локальный доступ, более того, по соображениям безопасности именно так и следует сделать. Но в случае использования многосерверной инфраструктуры настройки потребуется изменить.
Подключение к удаленной базе данных MySQL позволяет работать с ее содержимым аналогично локальным БД. Такой подход позволяет редактировать, считывать информацию через интернет с любого компьютера независимо от расположения пользователя.
В этом материале мы рассмотрим, как подключиться к MySQL несколькими способами. В качестве тестовой базы можно применять облачные базы данных провайдера Timeweb Cloud. Запуск БД там займет пару минут.
Удаленное подключение к MySQL может ограничиваться настройками файрвола. Например, на сервере с Bitrix 7 такое подключение вероятнее всего будет недоступно из-за ограничений iptables. Потребуется дополнительно внести изменения в правила — открыть порт 3306.
Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного IP.
iptables это можно сделать командой:
sudo iptables -A INPUT -s 123.45.67.8 -p tcp —destination-port 3306 -j ACCEPT
Замените адрес из примера на нужный вам.
Если на сервере используется UFW, настройку можно выполнить с помощью:
sudo ufw allow from 123.45.67.8 to any port 3306
После завершения настройки проверьте, что пользователь может подключиться к MySQL удаленно.
mysql -u имя_пользователя -h адрес_хоста_mysql -p
🔍 Простой поиск по базе знаний
По умолчанию сервер MySQL настроен таким образом, что к нему разрешены подключения только с локальной машины, следовательно, подключиться из-вне (по интернет или локальной сети) не получится.
Убедиться в этом можно набрав на сервере команду:
sudo netstat -tlp
В результате получите что-то типа этого:
Отсюда видно, что mysql слушает только интерфейс localhost (127.0.0.1). Это не всегда удобно, особенно когда есть необходимость выделить под сервер mysql отдельный сервер. А в рамках корпоративной локальной сети такое бывает очень часто.
Чтобы разрешить серверу MySQL принимать запросы из-вне необходимо предпринять несколько несложных шагов:
Открываем конфигурационный файл любимы редактором, например nano, из под привилегированного пользователя:
sudo nano /etc/mysql/my.cnf
Если у вас установлен сервер mariaDB, то конфигурационный файл находится в другом месте:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
Теперь остается только перезапустить сервис MySQL:
sudo service mysql restart
Теперь осталось только завести пользователя, которому разрешено обращаться к серверу MySQL извне.
Шаг 1. Редактирование конфигурационного файла
В Ubuntu файл размещается, как правило, по пути /etc/mysql/mysql.conf.d/mysqld.cnf
В CentOS это могут быть /etc/mysql/my.cnf/etc/my.cnf
Откройте файл для редактирования, указав нужный путь:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите в нем следующие строки:
# Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.bind-address = 127.0.0.1
Параметр bind-address определяет, с каких адресов MySQL разрешает подключения. В данном случае оно возможно только с локального сервера (localhost, 127.0.0.1).
Укажите здесь нужные вам настройки:
После перезапустите MySQL:
sudo systemctl restart mysql
Сколько подключений к БД доступно
Количество одновременно работающих с базой данных пользователей или приложений ограничено объемом оперативной памяти, выделенной на работу нод конкретного кластера. Все, что требуется от пользователя, это изменить тариф на , масштабировать его под свои требования.
Создание внешнего пользователя MySQL
Теперь нужной подключиться к MySql с паролем суперпользователя системы (системы!!! а не MySQL):
После подключения к MySQL можно создать пользователя и дать привилегию, например:
Это делать не желательно, если конечно вы не заводите себя.
Подготовительный этап
Чтобы разрешить доступ к своим базам данных потребуется:
Для этого прекрасно подойдет наш облачный VPS-сервер.
Шаг 2. Создание пользователя MySQL
Подключитесь к MySQL:
С помощью команд ниже создайте пользователя и выдайте ему необходимые привилегии. В примере используется ALL PRIVILEGES, но в зависимости от ваших задач вы можете выдавать только отдельные права доступа (например, CREATE, INSERT, UPDATE и т.д.).
Для того, чтобы создаваемый пользователь мог подключаться к конкретной базе с любого адреса, используйте команду:
Если нужно, чтобы пользователь мог подключаться только с определенного адреса, укажите его вместо %, например:
С помощью следующей команды можно разрешить пользователю подключение ко всем базам вместо одной конкретной:
Через phpMyAdmin
В пункте «Имя хоста» выберите «Любой хост» и укажите либо %, чтобы разрешить подключение с любого адреса, либо конкретный IP.
На следующем шаге задайте нужные привилегии для пользователя. Это может быть полный набор прав или с определенными ограничениями (например, вы можете запретить новой учетной записи удалять таблицы базы данных; таким образом удаление будет возможно только при локальном подключении).
Способы, доступные пользователю
Существует несколько вариантов коннекта, какой именно выбрать, решать вам:
Во всех перечисленных способах возможно подключение по защищенному каналу благодаря SSL-сертификату.
Подключение из разных операционных систем
как подключиться к базе данных MySQL из разных операционных систем. Выглядеть команды будут так:
Разблокировка доступа к MySQL извне
Чтобы разрешить «внешние» подключения к серверу базы данных, выполните следующие действия:
Войдите на свой сервер как привилегированный пользователь и уточните, какой именно сетевой порт использует MySQL:
Как видим, прослушивается TCP-порт 3306. Разрешим доступ к нему в настройках брандмауэра:
ufw allow 3306
Далее нужно найти, в каком именно из файлов, описывающих настройки MySQL, объявлен адрес, прослушиваемый службой:
grep -r «bind» /etc/mysql/
Замените значение директивы bind-address на 0.0.0.0 и проверьте результат:
Следующий шаг не является обязательным. Вы можете аутентифицироваться в сервисе как существующий пользователь или же создать новый аккаунт и предоставить ему соответствующие привилегии:
Проверка доступности службы
Чтобы проверить результат проделанных действий, войдите в консоль «удаленного» сервера и выполните команду:
Затем введите или вставьте скопированный ранее в буфер пароль от созданной учетной записи, чтобы попасть на сервер управления базами данных.
Теперь можно, например, посмотреть на содержимое базы:
Краткие итоги
После прочтения этой статьи вы узнали, как получить доступ извне к вашему серверу MySQL и удаленно управлять размещенными там данными.
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
ООО «ИТГЛОБАЛКОМ ЛАБС»