我在 StackOverflow 中检查了这些答案,但它们对我不起作用:A1 , A2A3 .
我按照这些答案编写我的代码并得到'(1045,“用户'root'@'localhost'的访问被拒绝(使用密码:YES)”)'。这是为什么?
我的代码在这里:
第一次尝试:

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'的访问被拒绝(使用密码:YES)”)
那么如何通过 SSH 连接到远程 Mysql 呢?
此外,我在本地 mysql 工作台中使用相同的“ssh 主机名”和“mysql 主机名”“mysql 服务器端口”。不知道会不会有影响。
#我用***来代替一些私有(private)信息。

请您参考如下方法:

这可以工作:

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) 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!