Назад | Перейти на главную страницу

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

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

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

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

#skip-networking
#bind-address                   = 127.0.0.1

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

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

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

Вы не можете выполнить привязку более чем к одному 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, а затем использовать редир выставить его на произвольных интерфейсах.

Я использовал это, чтобы помочь гостю виртуального ящика увидеть 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

Думаю, ваш вопрос связан с этой ошибкой http://bugs.mysql.com/bug.php?id=14979 В отчете об ошибке предлагается обходной путь.

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

bind-address                   = 127.0.0.1

к

bind-address                   = 0.0.0.0

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

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