Linux mysql удаленное подключение

📑 Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu

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

Убедиться в этом можно набрав на сервере команду:

В результате получите что-то типа этого:

Отсюда видно, что mysql слушает только интерфейс localhost (127.0.0.1). Это не всегда удобно, особенно когда есть необходимость выделить под сервер mysql отдельный сервер. А в рамках корпоративной локальной сети такое бывает очень часто.

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

  1. Поменять одну строчку в конфигурационном файле MySQL;
  2. Создать сетевого пользователя с необходимыми правами.

Разрешаем MySQL слушать интерфейс, который смотрит во внешнюю сеть

Открываем конфигурационный файл любимы редактором, например nano, из под привилегированного пользователя:

Если у вас установлен сервер mariaDB, то конфигурационный файл находится в другом месте:

и меняем 127.0.0.1 на 0.0.0.0 — тогда сервер будет слушать все интерфейсы компьютера, либо задаем конкретный ip-адрес локального интерфейса, который смотрит в локальную сеть. Например — 192.168.122.10.

Теперь остается только перезапустить сервис MySQL:

Теперь осталось только завести пользователя, которому разрешено обращаться к серверу MySQL извне.

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

Теперь нужной подключиться к MySql с паролем суперпользователя системы (системы. а не MySQL):

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

Здесь дается полный доступ к базе данных userdata пользователю с логином user и паролем password, подключающемуся с любого ip.

Можно ограничить права пользователя, разрешив ему подключаться к базе только с определенного ip. Для этого меняем % на конкретный ip-адрес, например 192.168.122.16

А можно и разрешить пользователю всё — подключаться ко всем базам с любого ip-адреса

Это делать не желательно, если конечно вы не заводите себя.

Источник

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

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

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

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

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

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

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

Читайте также:  Windows key terminal server

Для этого вам необходимо отредактировать файл конфигурации 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.

Читайте также:  Eye one drivers windows

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

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

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

Выводы

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

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

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

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

Источник

Настройка удаленного подключения к MySQL

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

Как установить соединение с удаленной базой?

Для установления удаленного соединения нужно указать параметры, характеризующие устанавливаемое подключение. Это

  • —host
  • —protocol
  • —port

Из четырех возможных протоколов удаленное подключение позволяет только TCP/IP, поэтому первым требованием является доступность компьютера из сети по TCP/IP.
Далее необходимо добавить имя хоста (или ip адрес машины, на которой расположена база) в строке подключения:
mysql —host=host_name
Обратите внимание, что указание в качестве имени хоста значения localhost (или же отсутствие такого параметра, что то же самое, так как это дефолтное значение) приводит к обращению на локальную машину.

Учтите, что параметры имеют две формы записи: длинную и короткую. В свою очередь, если параметр имеет значение (как например, в случае хоста необходимо указать имя хоста к которому нужно подключиться), то короткая форма записи может использоваться с пробелом или без (исключением из этого правила является пароль).
Таким образом, следующие три записи являются эквивалентными:

  • mysql —host=myhost.ru
  • mysql -h myhost.ru
  • mysql -hmyhost.ru

Как настроить соединение с удаленной базой?

В MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. По умолчанию доступ разрешен только с локальной машины, т.е. для пользователя user@localhost. Права на доступ пользователям даются с помощью команды GRANT. Команда выполняется под рутом.

Например, если я хочу создать юзера, который сможет коннектиться с любого хоста с полными правами, то следует выполнить следующую команду:
GRANT ALL PRIVILEGES ON `имя_базы`.* TO myuser@% IDENTIFIED BY ‘пароль’;

Примечание. Обратите внимание, что данная команда дает доступ пользователю myuser со всех IP кроме 127.0.0.1, соответсвующего localhost.
Для пользователя myuser@localhost необходимо давать права отдельной командой GRANT.

Если вы решите обратиться к локальной машине как к удаленной, используя протокол TCP/IP, то не забывайте, что myuser@localhost и myuser@ip_собственного_компа это разные пользователи и каждому из них права нужно давать отдельной командой.

Второй пример показывает как дать право читать таблицу time_zone в базе mysql пользователю myuser с машины 192.168.0.76
с паролем mypassy:
GRANT SELECT ON mysql.time_zone TO myuser@192.168.0.76 IDENTIFIED BY ‘mypassy’;

Возникающие сложности

Если после всех действий у вас возникает ошибка
(Can’t connect to Mysql Server on ‘ваш IP'(10061)),
значит соединение блокирует firewall (windows firewall, outpost, антивирус или еще что-то).

Читайте также:  Launch exe cmd windows

Если возникает ошибка
(Client does not support autentification protocol request by server; consider upgrading MySQL client), клиент (то есть ваша программа) не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD(‘password’);

Источник

Удаленный доступ к 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).

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

  • Чтобы разрешить доступ с конкретного 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 удаленно.

Источник

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