Сегодня я пытался получить доступ к MySQL, запущенному на моей удаленной рабочей машине (Ubuntu), с моей домашней машины (OSX), но у меня ничего не получилось.
На своей рабочей машине я проверил следующее:
sudo netstat -ntlup | grep mysql
дает
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 23692/mysqld
а также nmap
говорит мне
PORT STATE SERVICE
3306/tcp open mysql
И в /etc/mysql/my.cnf
Я поставил bind-address = 0.0.0.0
Я также запускаю следующее iptables
правила:
iptables -A INPUT -i lo -p tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp --sport 3306 -j ACCEPT
Что еще я могу проверить?
Если есть какое-то корпоративное сетевое правило, блокирующее мой доступ к MySQL, что я могу проверить, чтобы найти это?
Единственный способ сделать эту работу — это туннелирование по ssh:
ssh -L 8080:localhost:3306 my_user_name@my_dev_machine_IP
а потом если я сделаю
mysql -h 127.0.0.1 --port=8080 -u root -p
Я могу войти. Если я закрою ssh-туннель, я не смогу войти ни через mysql, ни даже через telnet remote_IP 3306
,
Но это не очень хорошо для того, что я хочу, потому что мне нужен PHP-код, работающий на моей локальной машине, чтобы иметь доступ к удаленной базе данных.
Я также (надеюсь, временно) открыл доступ к базам данных MySQL для всех хостов / IP:
GRANT ALL PRIVILEGES ON *.* TO 'application_username'@'%'
FLUSH PRIVILEGES
Любой совет с благодарностью получен!
Ubuntu имеет uwf
— в некоторых установках vps он включен по умолчанию. Так что, если это так, сделать sudo ufw allow 3306
, Я пишу этот JSUT на случай, если вы запустите nmap
с вашей рабочей машины. Если nmap показывает, что результат запускается с вашего Mac, то это не относится.
Других решений пока нет …