问题
python远程链接数据库报错pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘xxx.xxx.xxx.x’ (timed out)”)
解决办法
在链接远程主机的数据库时,需要先使用ssh验证,再链接服务器上的数据库,一般都能解决
def __init__(self):
self.ssh_host = "主机地址"
self.ssh_port = 22
self.ssh_user = "主机名"
self.ssh_password = "主机密码"
self.mysql_host = "127.0.0.1"
self.mysql_port = 3306
self.mysql_user = "数据库用户"
self.mysql_password = "数据库密码"
self.mysql_db = "数据库名"
self.server = None
self.conn = None
self.cursor = None
# 链接对象
def connect(self):
self.server = SSHTunnelForwarder(
(self.ssh_host, self.ssh_port),
ssh_username=self.ssh_user,
ssh_password=self.ssh_password,
remote_bind_address=(self.mysql_host, self.mysql_port))
self.server.start()
self.conn = pymysql.connect(host=self.mysql_host,
port=self.server.local_bind_port,
user=self.mysql_user,
passwd=self.mysql_password,
db=self.mysql_db)
# self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()