У меня следующая настройка: экземпляр RDS, работающий в группе подсетей из 2 частных подсетей; экземпляр EC2, работающий в общедоступной подсети. Итак, я хочу подключиться к своему экземпляру RDS через экземпляр EC2.
Я также хочу иметь возможность подключаться из оболочки. Итак, я запускаю следующую команду на своем локальном компьютере:
ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance
Таким образом, я вошел в свой экземпляр ec2 и попытался получить доступ к базе данных с помощью:
mysql -h localhost -u mydbuser -p
Ввели правильный мастер-пароль и получили:
ОШИБКА 1045 (28000): доступ запрещен для пользователя mydbuser @ localhost (с использованием пароля: ДА)
Я также пробовал туннелировать из моего экземпляра ec2 (выполнив из него команду SSH), это также создает соединение, но я не могу получить доступ к базе данных так же, как указано выше.
Я пробовал запустить команду ssh с параметром -N, при этом курсор мигает, и ничего не происходит.
На моем локальном компьютере брандмауэр отключен, весь трафик разрешен как для экземпляра EC2, так и для RDS.
Я также попытался установить соединение с Workbench, и там происходит странная вещь. Когда я подключаюсь и ввожу мастер-пароль, я получаю сообщение «Не могу подключиться к серверу MySQL на 127.0.0.1 (111)». Но если я отмечу «Сохранить пароль в связке ключей», в следующий раз он подключится нормально без каких-либо изменений.
Как мне это исправить и подключиться к экземпляру RDS через туннель SSH с оболочкой?
ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance
Вам нужно пробросить порт 3306
не порт 3305
.