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

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

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

236 голосов | спросил BlaM 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2008 20:04:18 +0400 2008, 20:04:18

7 ответов


221

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

#skip-networking
#bind-address                   = 127.0.0.1

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

ответил Christian Lescuyer 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2008 20:08:18 +0400 2008, 20:08:18
74

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

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

ответил Grey Panther 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2008 20:29:43 +0400 2008, 20:29:43
31

Вы не можете привязываться к нескольким 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= в целом, чтобы он привязывался ко всем адресам. Но убедитесь, что в my.cnf не включен skip-networking, если вы хотите также разрешить удаленные подключения (Подробнее: MySQL: Разрешить удаленные и локальные подключения ).

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

sudo service mysql restart

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

Подробнее:

ответил kenorb 11 PM00000010000002831 2014, 13:37:28
18

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

  

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

     

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

ответил Andreas 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 15 Sep 2010 00:45:07 +0400 2010, 00:45:07
7

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

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

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

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &
ответил txyoji 24 FebruaryEurope/MoscowbFri, 24 Feb 2017 23:23:29 +0300000000pmFri, 24 Feb 2017 23:23:29 +030017 2017, 23:23:29
6

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

ответил 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2008 20:14:04 +0400 2008, 20:14:04
2

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

bind-address                   = 127.0.0.1

to

bind-address                   = 0.0.0.0

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

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

ответил Aleksandar Pavić 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 19 Sep 2017 21:34:32 +0300 2017, 21:34:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132