Подключение к серверу MySQL с использованием библиотеки RMySQL через Bastion в R

На моей локальной машине у меня есть ssh в бастионе, где я могу подключиться к удаленному серверу MySQL. Я знаю, что это работает, потому что в терминале говорится, что я успешно подключился, и когда я использую приложение, такое как SQLPro, и пытаюсь подключиться к серверу MySQL с правильными разрешениями, я могу успешно войти в систему. Кроме того, команда линия

mysql -u username -p

работает после того, как я ssh.

Теперь я пытаюсь использовать библиотеку RMySQL для подключения к серверу и использования

con<-dbConnect(MySQL(), user = "username", password = "pw", host = "127.0.0.1")

я получаю возврат

Error in .local(drv, ...) : Failed to connect to database: Error: Can't connect to MySQL server on '127.0.0.1' (61)

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


person universe    schedule 26.08.2015    source источник
comment
Чтобы быть более наглядным, вот команда терминала для ssh в бастион ssh -L 13306:localhost:33750 ${USERNAME}@${BASTION_HOST} -t ssh -L 33750:localhost:3306 ${SERVER_IP}   -  person universe    schedule 27.08.2015


Ответы (2)


con<-dbConnect(MySQL(), user = "username", password = "pw", host = "localhost")

Если у вас есть верстак, перейдите в сервер-> клиентское соединение и проверьте имя хоста. Ваше имя хоста может быть неправильным

person Cricketer    schedule 26.08.2015
comment
Это не так, я подключаюсь через порт, поэтому 127.0.0.1 должен подойти. И снова я попытался подключиться через бастион, используя приложение, такое как SQLPro, с теми же учетными данными (например, имя пользователя, pw, 127.0.0.1), и это работает. - person universe; 27.08.2015

Я запускаю R в Linux.

После нескольких часов поиска следующая документация для AWS наконец дала мне команду, необходимую для подключения к экземпляру RDS через хост-бастион AWS:

https://aws.amazon.com/premiumsupport/knowledge-center/rds-connect-using-bastion-host-linux/

Синтаксис 2 по приведенной выше ссылке помог мне настроить туннель:

ssh -i Private_key.pem -f -N -L 3306:RDS_Instance_Endpoint:3306 ec2-user@EC2-Instance_Endpoint -v

Это успешно переадресовало мой локальный порт 127.0.0.1:3306 на порт RDS 3306.

Затем я подключился к экземпляру RDS из R всего лишь:

cn = dbConnect(RMariaDB::MariaDB(), user = myDataBaseUserName, password = myPassword, host = 127.0.0.1, dbname = mySchemaName)

person Geoffrey Poole    schedule 16.01.2021