#mysql #amazon-web-services #ubuntu
Вопрос:
Я установил MySQL 8.0.25 на экземпляре Ubuntu 20.04 LTS (ARM) на AWS.
Я могу получить к нему доступ, используя адрес 127.0.0.1 локально, но не могу получить к нему удаленный доступ из другого экземпляра.
«Привязка-адрес» изначально был закомментирован, я раскомментировал его и изменил на «0.0.0.0» (служба mysql была перезапущена) — не помогло, поэтому я прокомментировал его обратно.
«Пропустить подключение к сети» нет в файле cnf.
Я изменил порт на 3307, просто чтобы убедиться, что я смотрю на правильный cnf, и теперь MYSQL действительно прослушивает порт 3307:
локально я могу подключиться с помощью порта 3307, но не удаленно:
Я знаю, что брандмауэр работает хорошо, потому что, если я удалю порт 3307 из правил, ошибка будет другой:
Как вы можете видеть, ошибка TCP 111 («Отказано в подключении») стала ошибкой 113 («Нет маршрута к хосту»).
Подключение к Telnet отказано с той же ошибкой:
Я перезагрузил экземпляр MySQL — никаких изменений.
Почему MYSQL откажется от удаленного подключения, если «адрес привязки» закомментирован, а брандмауэр открыт?
Комментарии:
1. Я вижу, что он слушает только 127.0.0.1, а не 0.0.0.0. Если вы не привязаны к 0.0.0.0, он не будет доступен удаленно. Когда вы установили адрес привязки, изменился ли ваш netstat?
2. Я не понимаю, как настроена ваша группа безопасности. Можете ли вы также опубликовать это?
3. @RodrigoM — Группа безопасности имеет порты 22, 3306 и 3307, открытые с любого адреса. Если бы проблема заключалась в SG, то закрытие порта в брандмауэре Ubuntu не изменило бы ошибку TCP со 111 на 113.
4. @stdunbar — когда я изменяю «адрес привязки «на» 0.0.0.0 «и перезапускаю MySQL, netstat по-прежнему показывает» 127.0.0.1:3307 » в качестве локального адреса и 0.0.0.0:* в качестве иностранного адреса. i.imgur.com/zhiQkm0.jpeg
Ответ №1:
комментарий @stdunbar указал мне правильное направление.
Проблема возникла из-за того, что я следовал инструкциям по установке MYSQL на https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04 , и запустил сценарий безопасности при настройке MYSQL:
sudo mysql_secure_installation
По какой — то причине этот скрипт заставляет MYSQL игнорировать bind-address
настройку в файле cnf, в то время как он все еще использует port
настройку- очень запутанно!
Когда я установил MYSQL без запуска сценария безопасности, «локальный адрес» демона MYSQL в netstat -lnp | grep mysql
команде изменился с 127.0.0.1:
После этого MYSQL начал принимать удаленные подключения. Конечно, мне все равно пришлось создать удаленного пользователя:
CREATE USER 'root'@'remotehostname' IDENTIFIED WITH caching_sha2_password BY 'newpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'remotehostname' WITH GRANT OPTION;