Доступ к mysql из вне


Доступ к mysql из вне

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

Если же требуется подключаться к MySQL извне, со сторонних адресов, необходимо выполнить следующее:

Работать с удаленной базой данных можно с криптографической защитой данных или без нее. Это зависит от задачи, которую предстоит решать. Соединение возможно как вручную из операционок Linux и Windows, так и автоматически при наличии в приложении соответствующего кода. Вопрос, как подключиться к локальному серверу MySQL, имеет то же решение. Отличие составляет лишь адрес, который понадобится указать в командах.

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

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

Подключение к удаленной базе данных MySQL позволяет работать с ее содержимым аналогично локальным БД. Такой подход позволяет редактировать, считывать информацию через интернет с любого компьютера независимо от расположения пользователя.

В этом материале мы рассмотрим, как подключиться к MySQL несколькими способами. В качестве тестовой базы можно применять облачные базы данных провайдера Timeweb Cloud. Запуск БД там займет пару минут.

Удаленное подключение к MySQL может ограничиваться настройками файрвола. Например, на сервере с Bitrix 7 такое подключение вероятнее всего будет недоступно из-за ограничений iptables. Потребуется дополнительно внести изменения в правила — открыть порт 3306.

Читайте также:  Рейтинг хостингов 2021, платные и бесплатные хостинги, какой лучший — Хабр Фриланс

Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного 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:


Доступ к mysql из вне

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

ufw allow 3306


Доступ к mysql из вне

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

grep -r «bind» /etc/mysql/


Доступ к mysql из вне

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


Доступ к mysql из вне

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


Доступ к mysql из вне

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

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


Доступ к mysql из вне

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


Доступ к mysql из вне

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

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

Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

ООО «ИТГЛОБАЛКОМ ЛАБС»

Оцените статью
Хостинги