如何连接DigitalOcean Function与MySQL?连接超时问题求助
解决DigitalOcean Python Function连接MySQL超时问题
- 检查数据库防火墙规则:DigitalOcean MySQL实例默认仅允许指定IP访问,而Functions没有固定出口IP,需在数据库防火墙设置中添加
0.0.0.0/0(测试用,生产环境建议限制为DigitalOcean Functions的IP段),确保连接请求能到达数据库。 - 核对连接参数准确性:确认数据库主机地址(用平台提供的公网/专用地址)、端口(默认3306)、用户名、密码完全正确,参数错误会导致连接请求挂起直至超时。
- 设置连接超时参数:在Python连接代码中显式设置短连接超时,比如
connect_timeout=5,让连接失败时快速抛出错误,避免触发Function的6秒超时限制。示例代码:
import mysql.connector from mysql.connector import Error try: conn = mysql.connector.connect( host="你的数据库地址", user="数据库用户名", password="数据库密码", database="目标数据库", connect_timeout=5 ) if conn.is_connected(): print(f"已连接到MySQL服务器版本: {conn.get_server_info()}") except Error as e: print(f"连接MySQL出错: {e}") finally: if 'conn' in locals() and conn.is_connected(): conn.close()
- 优先使用VPC内网连接:若Function和数据库在同一DigitalOcean VPC下,改用内网地址连接,大幅降低网络延迟,提升连接稳定性。
- 检查Function网络权限:确认Functions运行环境未被限制出站网络访问,部分默认配置可能拦截外部数据库连接,需在Function设置中开启对应权限。
内容的提问来源于stack exchange,提问作者TaKo
相关产品推荐
相关产品推荐

