MySQL: невозможно подключиться с помощью sshtunnel - PullRequest
0 голосов
/ 07 апреля 2020

Я использую 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)

У кого-нибудь есть идеи по этому поводу?

...