Я использую mysql.connector
и sshtunnel
для подключения к моей базе данных через s sh.
Я могу получить доступ к этой базе данных с указанием c конфигурации на dbeaver с использованием s sh, но происходит сбой при запуске через Python.
Код:
with SSHTunnelForwarder(
(self.ssh_host, 22), # Remote server IP and SSH port
ssh_username=self.ssh_username,
ssh_private_key=self.ssh_pkey,
remote_bind_address=(self.ssh_host, 3306)
) as server:
server.start() # start ssh sever
print('Server connected via SSH')
local_port = str(server.local_bind_port)
print(local_port)
connection = mysql.connector.connect(
user=self.user_mysql,
password=self.password_mysql,
host=local_port,
database=self.database_mysql,
port=self.port_mysql)
db_Info = connection.get_server_info()
print("Connected to MySQL Server version ", db_Info)
... sshtunnel
имеет успех и печатает 'Server connected via SSH'
Однако эта ошибка брошено:
Traceback (most recent call last):
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/network.py", line 509, in open_connection
self.sock.connect(sockaddr)
TimeoutError: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 4, in <module>
pilot._build_connection_mysql()
File "/home/mgssalim/code/qoala/etl_mysql_to_redshift/p2p_service_production/coba.py", line 78, in _build_connection_mysql
port=local_port)
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/__init__.py", line 179, in connect
return MySQLConnection(*args, **kwargs)
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/connection.py", line 95, in __init__
self.connect(**kwargs)
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/abstracts.py", line 716, in connect
self._open_connection()
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/connection.py", line 206, in _open_connection
self._socket.open_connection()
File "/home/mgssalim/anaconda3/lib/python3.7/site-packages/mysql/connector/network.py", line 512, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003:
Can't connect to MySQL server on '{my_port}:34463' (110 Connection timed out)
У кого-нибудь есть идеи по этому поводу?