как подключиться к mysql через s sh через Python - PullRequest
2 голосов
/ 20 июня 2020

Я проверил эти ответы в StackOverflow, но они мне не подходят: A1 , A2 и A3 .

I напишите мой код, как эти ответы, и получите '(1045, "Доступ запрещен для пользователя' root '@' localhost '(с использованием пароля: ДА)")'. Почему?

здесь мой код:

первая попытка:

from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(
      ('****.ucd.ie', 22),
      ssh_password="***",
      ssh_username="s***",
      remote_bind_address=('127.0.0.1', 3306)) as server:

     con = pymysql.connect(user='root',passwd='***',db='dublinbus',host='127.0.0.1',port=3306)

вторая попытка:

from sshtunnel import SSHTunnelForwarder
import pymysql
import pandas as pd

tunnel = SSHTunnelForwarder(('****.ucd.ie', 22), ssh_password='***', ssh_username='s***t',
     remote_bind_address=('127.0.0.1', 3306)) 
tunnel.start()
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='****', port=3306)
data = pd.read_sql_query("SHOW DATABASES;", conn)

третья попытка:

from sshtunnel import SSHTunnelForwarder
import pymysql

with SSHTunnelForwarder(
    ('****.ucd.ie',22),  
    ssh_password='****',
    ssh_username='s****t',
    remote_bind_address=('127.0.0.1', 3306)) as server:  
 
    db_connect = pymysql.connect(host='127.0.0.1',  
                                 port=3306,
                                 user='root',
                                 passwd='****',
                                 db='dublinbus')
 
    cur = db_connect.cursor()
    cur.execute('SELECT stop_num FROM dublinbus.stops limit 10;')
    data=cur.fetchone()
    print(data[0])

Все они дают мне: (1045, «Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА)»)

Итак, как я могу подключиться к моему удаленный Mysql через S SH?

Более того, я использую те же s sh hostname и mysql hostname '' mysql server port 'в моем локальном mysql workbench . Не знаю, повлияет это какое-то действие или нет.

# Я использую *** для замены некоторой личной информации.

1 Ответ

1 голос
/ 23 июня 2020

это может сработать:

from sshtunnel import SSHTunnelForwarder
import pymysql
import pandas as pd

server = SSHTunnelForwarder(
ssh_address=('****', 22),
ssh_username="****",
ssh_password="****",
remote_bind_address=("127.0.0.1", 3306))

server.start()

con = pymysql.connect(user='root',passwd='***',db='****',host='127.0.0.1',port=server.local_bind_port)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...