Mysql удаленное подключение windows

Подключение к удаленному серверу MySQL: настройка

Прежде всего, авторизуемся на сервере, который будет служить сервером баз данных и устанавливаем MySQL

Производим изначальную конфигурацию в автоматическом режиме

При этом разрешаем удаленное подключение от имени пользователя root (необходимо только при удаленном подключении от имени пользователя root)

Disallow root login remotely? no

Также потребуется внести коррективы в основной конфигурационный файл MySQL /etc/mysql/my.cnf

Параметр bind следует закомментировать. Если необходимо ограничить доступ к MySQL извне — использовать iptables

Чтобы конфигурационный файл считался — перезапускаем сервис

Авторизуемся в MySQL

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

GRANT ALL ON *.* TO testuser@’123.123.123.124′ IDENTIFIED BY ‘secretpassword’;

Здесь указываем ip адрес основного сервера, с которого работает веб-проект. Если подключение производится с нескольких серверов — команду можно повторять несколько раз.

Проверяем наличие существующих баз данных и пользователей MySQL (должны увидеть данные пользователя testuser)

Настройки на основном сервере проекта

Авторизуемся на основном сервере

Создаем локального пользователя

CREATE USER ‘testuser’@’localhost’ IDENTIFIED BY ‘secretpassword’;

Выполняем команду nmap, убеждаемся в том, что порт на сервере баз данных открыт

Авторизуемся с реквизитами пользователя testuser в MySQL удаленно указывая IP адрес сервера баз данных

mysql -u testuser -h 123.123.123.123 -p

Если никаких ошибок при авторизации не появляется — все сделано верно, пробуем пробуем создать базу данных.

Возможные проблемы с установкой удаленного подключения к MySQL и их решение

В случае если имеют место какие-либо трудности при подключении — проверяем iptables на предмет наличия запрещающих правил:

Если запрещающие правила обнаружены — их следует удалить.

Также можно добавить разрешающее правило — на основном сервере синтаксис команды будет следующим:

/sbin/iptables -A INPUT -i eth0 -p tcp —destination-port 3306 -j ACCEPT

Из соображений безопасности можно не предоставлять все права пользователю удаленного сервера выдать только права на SELECT,INSERT,UPDATE или DELETE. В примере пользователю выдали права на все базы данных, без каких либо трудностей права можно выдать на конкретную БД или таблицу БД.

Читайте также про отказоустойчивые кластеры Master-Slave MySQL и Galera Cluster

Удаленный доступ к MySQL

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

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

  1. Внести изменения в конфигурационный файл MySQL.
  2. Разрешить пользователю или пользователям MySQL удаленные подключения.

Шаг 1. Редактирование конфигурационного файла

В Ubuntu файл размещается, как правило, по пути /etc/mysql/mysql.conf.d/mysqld.cnf .

В CentOS это могут быть /etc/mysql/my.cnf или /etc/my.cnf .

Откройте файл для редактирования, указав нужный путь:

Найдите в нем следующие строки:

Параметр bind-address определяет, с каких адресов MySQL разрешает подключения. В данном случае оно возможно только с локального сервера (localhost, 127.0.0.1).

Читайте также:  Cheatsheet mac os что это

Укажите здесь нужные вам настройки:

  • Чтобы разрешить доступ с конкретного IP-адреса, укажите его вместо 127.0.0.1.
  • Чтобы разрешить доступ с любых IP-адресов, укажите здесь 0.0.0.0. Обратите внимание, что такая настройка может быть небезопасной.

Закройте файл, сохранив изменения (в nano это можно сделать с помощью клавиш Crtl X → Y → Enter).

После перезапустите MySQL:

Шаг 2. Создание пользователя MySQL

Все пользователи MySQL, имеющие доступ только к локальным подключениям, имеют учетную запись вида user@localhost. Чтобы разрешить пользователю подключаться удаленно, нужно добавить для него учетную запись user@нужный_IP (или user@%, тогда будет возможно подключение с любого IP).

Эту настройку можно выполнить через консоль или через phpMyAdmin.

Через консоль

Подключитесь к MySQL:

С помощью команд ниже создайте пользователя и выдайте ему необходимые привилегии. В примере используется ALL PRIVILEGES, но в зависимости от ваших задач вы можете выдавать только отдельные права доступа (например, CREATE, INSERT, UPDATE и т.д.).

Для того, чтобы создаваемый пользователь мог подключаться к конкретной базе с любого адреса, используйте команду:

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

С помощью следующей команды можно разрешить пользователю подключение ко всем базам вместо одной конкретной:

Через phpMyAdmin

В phpMyAdmin перейдите в раздел «Учетные записи пользователей» -> «Добавить новую учетную запись».

В пункте «Имя хоста» выберите «Любой хост» и укажите либо %, чтобы разрешить подключение с любого адреса, либо конкретный IP.

На следующем шаге задайте нужные привилегии для пользователя. Это может быть полный набор прав или с определенными ограничениями (например, вы можете запретить новой учетной записи удалять таблицы базы данных; таким образом удаление будет возможно только при локальном подключении).

Ограничения файрвола

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

Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного IP.

В iptables это можно сделать командой:

Замените адрес из примера на нужный вам.

Если на сервере используется UFW, настройку можно выполнить с помощью:

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

Как разрешить удаленные подключения к серверу базы данных MySQL

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

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

В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. Те же инструкции применимы и для MariaDB.

Настройка сервера MySQL

Первый шаг — настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на машине.

Если сервер MySQL и клиенты могут связываться друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только частного IP-адреса. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на машине.

Читайте также:  Все для windows рок

Для этого вам необходимо отредактировать файл конфигурации MySQL и добавить или изменить значение параметра bind-address . Вы можете установить один IP-адрес и диапазоны IP-адресов. Если адрес 0.0.0.0 , сервер MySQL принимает соединения на всех интерфейсах хоста IPv4. Если в вашей системе настроен IPv6, то вместо 0.0.0.0 используйте :: .

Расположение файла конфигурации MySQL отличается в зависимости от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf , а в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf .

Найдите строку, которая начинается с bind-address и установите ее значение равным IP-адресу, который сервер MySQL должен прослушивать.

По умолчанию установлено значение 127.0.0.1 (прослушивается только на localhost).

В этом примере мы настроим сервер MySQL для прослушивания всех интерфейсов IPv4, изменив значение на 0.0.0.0

Если есть строка, содержащая skip-networking , удалите ее или закомментируйте, добавив # в начале строки.

В MySQL 8.0 и выше директива bind-address может отсутствовать. В этом случае добавьте его в раздел [mysqld] .

После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать службы.

Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:

В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:

Предоставление доступа пользователю с удаленного компьютера

Следующим шагом будет разрешение доступа к базе данных удаленному пользователю.

Войдите на сервер MySQL как пользователь root, набрав:

Если вы используете старый собственный плагин аутентификации MySQL для входа в систему как root, выполните приведенную ниже команду и введите пароль при появлении запроса:

Изнутри оболочки MySQL используйте оператор GRANT чтобы предоставить доступ удаленному пользователю.

  • database_name — это имя базы данных, к которой будет подключаться пользователь.
  • user_name — это имя пользователя MySQL.
  • ip_address — это IP-адрес, с которого пользователь будет подключаться. Используйте % чтобы разрешить пользователю подключаться с любого IP-адреса.
  • user_password — пароль пользователя.

Например, чтобы предоставить доступ к базе данных dbname пользователю с именем foo с паролем my_passwd с клиентского компьютера с IP 10.8.0.5 , вы должны запустить:

Настройка межсетевого экрана

Последний шаг — настроить брандмауэр, чтобы разрешить трафик на порт 3306 (порт по умолчанию MySQL) с удаленных машин.

Iptables

Если вы используете iptables в качестве брандмауэра, приведенная ниже команда разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.

Разрешить доступ с определенного IP-адреса:

UFW — это брандмауэр по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), запустите:

Разрешить доступ с определенного IP-адреса:

БрандмауэрD

FirewallD — это инструмент управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:

Чтобы разрешить доступ с определенного IP-адреса через определенный порт, вы можете создать новую зону FirewallD или использовать расширенное правило. Итак, создайте новую зону с именем mysqlzone :

Проверка изменений

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

Где user_name — это имя пользователя, mysql_server_ip вы предоставили доступ, а mysql_server_ip — это IP-адрес хоста, на котором работает сервер MySQL.

Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.

Если вы получаете сообщение об ошибке, подобное приведенному ниже, то либо порт 3306 не открыт , либо сервер MySQL не прослушивает IP-адрес .

Читайте также:  Описание windows hyper v server

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

Выводы

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

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

  1. Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
  2. Разрешите доступ удаленному пользователю.
  3. Откройте порт MySQL в вашем брандмауэре.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Удаленное подключение к MySQL

По умолчанию подключиться к MySQL можно только с того же хоста. Чтобы получить доступ к серверу с другого IP-адреса, нужно настроить удалённое подключение.

Внимание! После ручной правки конфигураций MySQL — my.cnf требуется перезапустить сервер MySQL.

ISPmanager5 — Службы — MySQL/MariaDB — Рестарт или в консоли сервера:

Создание удалённого подключения в ISPmanager 5

В панели ISPmanager — раздел Настройки — Серверы баз данных выделите сервер MySQL и нажмите кнопку Изменить .

В открывшемся окне поставьте галочку Удаленный доступ . В поле IP-адрес выберите IP, по которому будет доступно подключение.

В панелях с версией ниже 5.95 опции Удаленный доступ нет. Необходимо выполнить настройки вручную. В конфигурационном файле /etc/my.cnf ( /etc/mysql/my.cnf для Debian) должна отсутствовать строка skip-networking , если она присутствует — следует её закомментировать:

Также следует добавить/изменить:

Для удалённого подключения к базам данных требуется при создании базы отметить Удалённый доступ .

Если при создании базы вы не выбрали данную опцию, её можно указать в Управлении пользователями баз данных . Для этого перейдите в раздел Инструменты — Базы данных — выделите нужную базу — нажмите кнопку Пользователи — затем кнопку Изменить .

Пустое поле списка IP-адресов делает возможным подключение с любого IP.

Создание удалённого подключения в консоли

В конфигурационном файле /etc/my.cnf ( /etc/mysql/my.cnf для Debian) должна отсутствовать строка skip-networking , если она присутствует — следует её закомментировать:

Также следует добавить/изменить:

Подключитесь к сервер MySQL суперпользователем:

Далее создайте пользователя, например, dbuser (если вместо % указать localhost, авторизация будет возможна только с текущего сервера):

Можно проверить, что мы создали, командой, выводящей всех пользователей с их хостом и паролем:

Создайте базу, например, testdb :

Предоставление прав пользователю

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

Наиболее часто назначаемые права:

  • ALL PRIVILEGES — пользователю предоставляется полный доступ к базе данных.
  • CREATE — пользователю разрешено создавать базы данных и таблицы.
  • DROP — пользователю разрешено удалять базы данных и таблицы.
  • DELETE — пользователю разрешено удалять строки из определенной таблицы.
  • INSERT — пользователю разрешено вставлять строки в определенную таблицы.
  • SELECT — пользователю разрешено читать базу данных.
  • UPDATE — пользователю разрешено обновлять строки таблицы.
  • GRANT OPTION — пользователю разрешено изменять права других пользователей.

Назначить привилегии пользователю можно, используя синтаксис:

где permission — вид предоставляемой привилегии.

Например, установите полные права на базу testdb пользователю dbuser :

Предоставить права на вставку:

Предоставить несколько привилегий пользователю:

Можно ограничить права пользователя на добавление данных в определенной базе, указав её перед точкой. Для ограничения прав на доступ к определенной таблице укажите нужную таблицу после точки:

Отозвать все привилегии пользователя:

Посмотреть текущие привилегии пользователя:

После завершения настройки прав необходимо перезагрузить привилегии:

Оцените статью