У меня есть виртуальная машина CentOS на моем ноутбуке с адаптерами Host-only и NAT.
Я хочу подключиться к внешней базе данных MySQL на сервере Bluehost. Согласно Bluehost порт 3306 открыт.
Когда я бегу
nmap -v -sV localhost -p 3306
на моей виртуальной машине он обнаруживает открытый порт 3306 / tcp на 127.0.0.1.
Я не уверен, нужен ли мне порт 127.0.0.1, поскольку мой IP-адрес 192.168.56.101? Не знаю, как это настроить дальше. Заранее спасибо.
В iptables я добавил эти две строчки:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --sport 3306 -j ACCEPT
Не уверен, был ли это пункт назначения, или источник, или и то, и другое ?! Это вообще ВХОД?
Вам нужно будет предоставить привилегии, чтобы позволить пользователю подключаться удаленно, а также изменить адрес привязки в вашем /etc/mysql/my.cnf:
bind-address = 127.0.0.1
Измените его на:
bind-address = 0.0.0.0
перезапустите свой mysql-сервер
/etc/init.d/mysql restart
0.0.0.0 означает, что вы будете прослушивать все интерфейсы.
Теперь, чтобы предоставить пользователю права на удаленное подключение:
GRANT ALL PRIVILEGES ON DATABASE.* TO 'user'@'%' IDENTIFIED BY "pass";
% означает с любого ip, если вы хотите разрешить это только для определенного IP, замените% на ip.
Если вы видите, что порт 3306 удаленного сервера открыт с вашей виртуальной машины, это похоже на проблему конфигурации MySQL. Экземпляр MySQL на другом вашем сервере, скорее всего, отказывается от вашего соединения, поскольку это не локальное соединение. Это нестандартное поведение MySQL; он не принимает удаленные подключения.
Если вы хотите включить удаленные подключения, попробуйте выдать следующее из вашего экземпляра MySQL:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourUsername@xxx.yyy.zzz.aaa' IDENTIFIED BY "pass";
Это позволит пользователю yourUsername подключиться к серверу MySQL с IP-адреса xxx.yyy.zzz.aaa.