Как привязать сервер MySQL к более чем одному IP-адресу?

Вопрос или проблема

Существует ли секретный способ привязки MySQL к более чем одному IP-адресу?

Насколько я могу видеть, параметр bind-address в my.cnf не поддерживает более одного IP и не может быть использован более одного раза.

Нет, такого нет (я проверял час назад). Вы можете закомментировать bind-address в my.cnf:

Примечание: «час назад» сейчас уже более 15 лет назад.

#skip-networking
#bind-address                   = 127.0.0.1

Если вам нужно только 2 IP, вам придется использовать брандмауэр.

Для MySql версии 8.0.13 и выше и MariaDB версии 10.11 и выше можно указать список IP-адресов через запятую.

bind-address = 10.0.0.1,10.0.1.1,10.0.2.1

Соответствующая документация MySql.

Соответствующая документация MariaDB.

Спасибо @KurtFitzner за информацию о MariaDB.

Не забудьте перезапустить экземпляр MySQL после изменения конфигурационного файла.

Привязка к 127.0.0.x не сделает его доступным для всех устройств, это сделает его доступным только локально. Если вы хотите сделать его доступным для всех интерфейсов, следует использовать 0.0.0.0. Если вы хотите получить доступ к нему с более чем одного, но меньше чем со всех интерфейсов, вам следует привязаться к 0.0.0.0 и настроить брандмауэр для тех интерфейсов, через которые вы не хотите получать доступ.

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

Вы не можете привязываться к более чем одному IP-адресу, но вы можете привязаться ко всем доступным IP-адресам. В этом случае просто используйте 0.0.0.0 в качестве адреса привязки в вашем конфигурационном файле MySQL (например, /etc/mysql/my.cnf) следующим образом:

bind-address    = 0.0.0.0

Если адрес 0.0.0.0, сервер принимает TCP/IP соединения на всех серверных хостовых интерфейсах IPv4.

Кроме того, если адрес ::, сервер принимает TCP/IP соединения на всех серверных хостовых интерфейсах IPv4 и IPv6. Используйте этот адрес для разрешения IPv4 и IPv6 соединений на всех серверных интерфейсах.

Или вы можете просто закомментировать bind-address= полностью, чтобы он привязывался ко всем адресам. Но убедитесь, что у вас не включена опция skip-networking в my.cnf, если хотите разрешить удаленные соединения (Подробнее: MySQL: Разрешить как удаленные, так и локальные соединения).

После изменения адреса привязки не забудьте перезапустить ваш MySQL сервер с помощью:

sudo service mysql restart

Возможно, вы можете рассмотреть возможность запуска нескольких экземпляров MySQL на одном компьютере (различные порты) с репликацией Master/Slave. Репликация позволяет данным с одного сервера базы данных MySQL (мастера) копироваться на один или несколько серверов базы данных MySQL (слейвы).

Подробнее:

Нет, вы не можете. На странице, на которую вы ссылаетесь, ясно указано:

IP-адрес для привязки. Можно выбрать только один адрес. Если эта опция указана несколько раз, используется последний указанный адрес.

Если не указан ни адрес, ни 0.0.0.0, сервер прослушивает все интерфейсы.

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

В Linux есть некоторый TCP-инструментарий, который делает это возможным. В этой настройке вы бы настроили mysql на прослушивание по адресу 127.0.0.1, затем использовали бы redir для его выставления на произвольные интерфейсы.

Я использовал это для того, чтобы виртуальная машина могла видеть mysql, установленный на хост-машине.

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

До MySQL 8.0.13 –bind-address принимает одно значение адреса,
которое может указывать единственный IP-адрес без подстановочного знака или имя хоста, или
один из форматов адресов подстановочных знаков, которые разрешают прослушивание на нескольких сетевых интерфейсах (*, 0.0.0.0 или ::).

Начиная с MySQL 8.0.13, –bind-address принимает одно значение, как описано выше, или список значений, разделенных запятыми. Когда опция указывает список из нескольких значений, каждое значение должно указывать единственный
IP-адрес без подстановочного знака или имя хоста; ни одно не может указывать формат адреса с подстановочным знаком (*, 0.0.0.0 или ::).

Источник: https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_bind_address

Я думаю, ваш вопрос связан с этой ошибкой.

Отчет об ошибке предлагает некоторые обходные пути.

В my.cnf измените (обычно /etc/mysql/my.cnf на Linux или для Windows посмотрите этот ответ.

bind-address                   = 127.0.0.1

на

bind-address                   = 0.0.0.0

Затем перезапустите mysql (в Ubuntu service mysql restart) в Windows обычно перезапуск через Win+R services.msc

0.0.0.0 сообщает, что он должен привязаться ко всем доступным IP с портом, также указанным в my.cnf

.

Ответ или решение

Как привязать MySQL сервер к нескольким IP-адресам?

Привязка MySQL сервера к нескольким IP-адресам может быть важной задачей для интеграции с различными сетевыми приложениями и обеспечения надежной безопасности. Оптимизация конфигурации MySQL для совместной работы с несколькими IP-адресами требует понимания последних версий серверных систем и возможностей конфигурации.

Проблема и решение

Чаще всего администраторы сталкиваются с ограничением, что параметр bind-address в файле конфигурации MySQL (my.cnf) традиционно поддерживает только один IP-адрес. Однако начиная с MySQL версии 8.0.13 и MariaDB версии 10.11, появилась возможность указания нескольких адресов через запятую.

Вот пример того, как это сделать:

bind-address = 10.0.0.1,10.0.1.1,10.0.2.1

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

Дополнительные варианты конфигурации

Если необходимо принимать подключения через все доступные интерфейсы, можно использовать адрес 0.0.0.0, что позволит серверу слушать все IPv4 соединения, или :: для поддержания IPv4 и IPv6.

bind-address = 0.0.0.0

Это сделает сервер доступным для всех интерфейсов, поэтому важно помнить о конфигурации фаервола и обеспечить защиту путём ограничения доступа только к необходимым системам.

Рекомендации по безопасности

Помимо конфигурации IP-адресов, важно:

  1. Настроить фаервол для ограничения доступа к MySQL серверу и обеспечения большей безопасности состязательной среды.

  2. Управление пользователями: Убедитесь, что у всех пользователей MySQL установлено конкретное значение поля host, а не %, чтобы ограничить доступ к серверу только из известных IP-адресов.

Дополнительные стратегии

Если требуемая конфигурация не может быть достигнута путем описанных выше методов, можно рассмотреть запуск нескольких экземпляров MySQL на одной машине (разные порты) или использовать решения типа репликации Master/Slave.

Заключение

Эти шаги помогут оптимизировать настройку MySQL для использование с несколькими IP-адресами. Учитывая новые возможности в современных версиях MySQL и MariaDB, теперь ваш сервер может быть более гибким и безопасным. Не забывайте перезагрузить MySQL после каждого изменения конфигурации:

sudo service mysql restart

Эта инструкция помогает обеспечить доступ к вашей базе данных именно таким способом, который лучше всего отвечает вашим бизнес-требованиям и технологиям.

Оцените материал
Добавить комментарий

Капча загружается...