В Django, как подключиться к базе данных MySQL на удаленном сервере через SSH?

Я огляделся и не могу найти ответов, которые конкретно касаются того, что мне интересно:

В терминале Mac я могу получить доступ к удаленному серверу через ssh:

ssh [my_username]@[server.host.com]

который запрашивает у меня пароль, и после того, как я ввожу свой пароль, он переносит меня на удаленный сервер.

После входа на удаленный сервер я могу получить доступ к MySQL:

mysql -u [other_username] -h [mysql.host.com] -p

который запрашивает у меня другой пароль, и после ввода пароля я нахожусь в консоли MySQL и могу показать находящиеся там базы данных и т. д. Мы можем назвать интересующую меня базу данных [database].

Мой вопрос: как мне подключить Django, работающий на моем локальном хосте, к [базе данных], чтобы мое приложение использовало эту [базу данных]?


person HLH    schedule 07.02.2017    source источник


Ответы (1)


Вы можете создать туннель ssh для сопоставления порта mysql удаленного сервера с локальным портом на вашем компьютере.

ssh -L 3333:127.0.0.1:<remote mysql port> <username>@<remote host> -N

Пока этот процесс активен, локальный порт 3333 будет подключаться к удаленному порту на удаленном хосте.

person turbotux    schedule 07.02.2017
comment
Хороший ответ, и это должно сработать. Но я был бы обеспокоен тем, является ли это хорошей идеей для других целей, кроме тестирования и непроизводственных целей. - person nicorellius; 08.02.2017
comment
Я бы не стал использовать это в производстве. В рабочей среде я бы настроил соответствующие сетевые маршруты, брандмауэр и т. д., чтобы сервер приложений мог напрямую подключаться к серверу базы данных. - person turbotux; 14.02.2017
comment
Это также работает даже без флага -N. Кроме того, вы можете отказаться от ‹username›@‹удаленный хост›, введя имя хоста, указанное в вашем файле конфигурации. - person Altus; 09.02.2018
comment
Как бы вы поместили это в конфигурацию DATABASE settings.py? Это ты туда положил? Это кажется обычным делом, и я не могу найти много информации об этом. - person Tunn; 05.12.2018