封装Python脚本:使用pymysql+sshtunnel,支持通过SSH隧道方式链接mysql数据库
好的,我可以帮你编写一个Python脚本,使用pymysql+sshtunnel库,实现通过SSH隧道方式连接MySQL数据库。请确保你已经安装了这两个库。
下面是代码,请先将需要修改的部分替换为自己的配置:
```python
import pymysql
from sshtunnel import SSHTunnelForwarder
# SSH服务器的配置
ssh_host = 'your_ssh_host' # SSH的IP地址或者域名
ssh_port = 22 # SSH的端口号
ssh_user = 'your_ssh_username' # SSH登录用户名
ssh_pwd = 'your_ssh_password' # SSH登录密码
ssh_private_key = 'path/to/your/private_key.pem' # 如果使用私钥登录,填写私钥文件的路径,否则留空
# 目标MySQL数据库的配置
mysql_host = 'localhost' # MySQL数据库的IP地址或者域名
mysql_port = 3306 # MySQL数据库的端口号
mysql_user = 'your_mysql_username' # MySQL登录用户名
mysql_pwd = 'your_mysql_password' # MySQL登录密码
mysql_db = 'your_mysql_database_name' # 要连接的数据库名称
# 创建SSH隧道并连接到MySQL数据库
with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_user,
ssh_password=ssh_pwd,
ssh_private_key=ssh_private_key,
remote_bind_address=(mysql_host, mysql_port),
local_bind_address=('0.0.0.0', 10022) # 绑定到本地的端口号,可以自定义
) as tunnel:
# 连接MySQL数据库
conn = pymysql.connect(
host='127.0.0.1',
port=tunnel.local_bind_port,
user=mysql_user,
password=mysql_pwd,
db=mysql_db,
charset='utf8mb4'
)
# 执行SQL语句
with conn.cursor() as cursor:
sql = 'SELECT * FROM your_table_name;'
cursor.execute(sql)
result = cursor.fetchall()
print(result)
# 断开与MySQL数据库的连接
conn.close()
```
上面的代码中,首先在SSH服务器上创建了一个SSH隧道,将本地的端口号与目标MySQL数据库的地址和端口号绑定起来。然后使用pymysql库连接MySQL数据库,并执行SQL语句,最后断开与数据库的连接,同时SSH隧道也会被关闭。
如果你还有其他问题,请随时提问。