Я пытаюсь подключить Tableau к базе данных SQL, которую я разместил на pythonanywhere.com, но она не работает, и я считаю, что причина в том, что мое удаленное подключение к pythonanywhere.com не имеет процесса, прослушивающего порт 3306. На самом деле, я думаю, что его активно убивают, но я не уверен, правда ли это.
Сейчас я на Windows 10 Machine и подключаюсь через git bash следующим образом:
ssh -L 3306:jonathanbechtel.mysql.pythonanywhere-services.com:3306 jonathanbechtel@ssh.pythonanywhere.com
После этого я запускаю команду netstat -an
и вижу следующее:
Насколько я понимаю, TIME_WAIT
status означает, что что-то локально прервало соединение.
Насколько я понимаю, мне нужно иметь локальный адрес 127.0.0.1:3306
, чтобы иметь статус LISTENING
, чтобы я мог использовать туннель в качестве соединения счто-нибудь еще.
Я также подключился к этой базе данных через блокнот jupyter, а также через MySQL, поэтому я знаю, что это можно сделать в некотором объеме.
Но я не знаю, почему в этом случае соединение прерывается.
Команда telnet 127.0.0.1 3306
говорит, что соединение работает:
ОБНОВЛЕНИЕ:
Проблема в том, что, когда я пытаюсь подключиться к своему соединению PuTTY (через Таблицу), я получаю следующее сообщение об ошибке:
[MySQL][ODBC 8.0(w) Driver]Access denied for user 'myusername'@'localhost' (using password: YES)
Неверное имя пользователя или пароль.
Однако, если я запускаю следующий код Python, я могу подключиться:
import mysql.connector
import sshtunnel
sshtunnel.SSH_TIMEOUT = 5.0
sshtunnel.TUNNEL_TIMEOUT = 5.0
with sshtunnel.SSHTunnelForwarder(
('ssh.pythonanywhere.com'),
ssh_username=info['username'], ssh_password=info['password'],
remote_bind_address=(info['db_address'], 3306)
) as tunnel:
connection = mysql.connector.connect(
user=info['username'], password=info['db_password'],
host=info['ssh_address'], port=tunnel.local_bind_port,
database=info['db_name'],
)
df = pd.read_sql_query('SELECT * FROM classes', connection)
connection.close()