AWS Lambda无法连接EC2实例上的MySQL问题求助
排查Lambda连接EC2上MySQL的连接拒绝问题
检查MySQL绑定地址:
默认MySQL可能仅绑定127.0.0.1,仅允许本地访问。登录EC2上的MySQL,执行SHOW VARIABLES LIKE 'bind_address';,若结果为127.0.0.1,需修改my.cnf(或my.ini)中的bind_address为0.0.0.0,随后重启MySQL服务。确认Lambda的VPC配置细节:
即便同属一个VPC和子网,也要确认Lambda确实关联了允许全流量的安全组;同时检查Lambda所在子网是否正常,EC2的私有IP是否属于该子网范围。验证跨实例端口连通性:
在EC2本地执行nc -zv <EC2私有IP> 3306确认本地可连接;若有同子网的其他EC2实例,在该实例上执行同样命令,验证跨实例的3306端口连通性。核对MySQL用户授权范围:
执行SELECT user, host FROM mysql.user;查看目标用户的授权主机,若为localhost或特定IP,需重新授权:GRANT ALL PRIVILEGES ON <目标数据库名>.* TO '<用户名>'@'%' IDENTIFIED BY '<密码>'; FLUSH PRIVILEGES;检查连接代码参数:
确保代码中<ec2 instance private ip address>已替换为正确的EC2私有IP,无空值或拼写错误;可明确指定端口参数避免默认值异常,修改后的代码示例:conn = pymysql.connect( host='<正确的EC2私有IP>', user='<用户名>', passwd='<密码>', db='<目标数据库名>', port=3306, connect_timeout=5 )调整Lambda的超时与资源配置:
将connect_timeout从2秒调整为5秒,同时确认Lambda的执行超时时间(默认3秒)足够覆盖连接耗时;适当提升Lambda的内存配置,避免资源不足影响网络操作。
内容的提问来源于stack exchange,提问作者crayon123
相关产品推荐
相关产品推荐

