连接远程MySQL数据库通常涉及以下几个基础概念:
原因: 可能是由于防火墙设置、MySQL配置或网络问题导致的。
解决方法:
my.cnf
或my.ini
)中的bind-address
设置为允许远程连接的IP地址(例如0.0.0.0
)。my.cnf
或my.ini
)中的bind-address
设置为允许远程连接的IP地址(例如0.0.0.0
)。原因: 可能是由于SSH密钥配置、SSH服务未运行或网络问题导致的。
解决方法:
import mysql.connector
config = {
'user': 'username',
'password': 'password',
'host': '远程服务器IP',
'database': '数据库名',
'port': '3306'
}
try:
connection = mysql.connector.connect(**config)
print("成功连接到数据库")
cursor = connection.cursor()
cursor.execute("SELECT * FROM 表名")
results = cursor.fetchall()
for row in results:
print(row)
except mysql.connector.Error as err:
print(f"连接失败: {err}")
finally:
if connection.is_connected():
cursor.close()
connection.close()
import mysql.connector
from sshtunnel import SSHTunnelForwarder
with SSHTunnelForwarder(
('远程服务器IP', 22),
ssh_username='用户名',
ssh_password='SSH密码',
remote_bind_address=('127.0.0.1', 3306)
) as tunnel:
config = {
'user': 'username',
'password': 'password',
'host': '127.0.0.1',
'database': '数据库名',
'port': tunnel.local_bind_port
}
try:
connection = mysql.connector.connect(**config)
print("成功连接到数据库")
cursor = connection.cursor()
cursor.execute("SELECT * FROM 表名")
results = cursor.fetchall()
for row in results:
print(row)
except mysql.connector.Error as err:
print(f"连接失败: {err}")
finally:
if connection.is_connected():
cursor.close()
connection.close()
通过以上步骤和示例代码,你应该能够成功连接到远程MySQL数据库并解决常见的问题。
领取专属 10元无门槛券
手把手带您无忧上云