如何在MySQL配置中添加指定IP段白名单以使用Google Apps Script
MySQL + Google Apps Script 连接白名单配置及实现步骤
1. 获取Google Apps Script JDBC出口IP范围
Google Apps Script调用JDBC连接外部数据库的出口IP属于Google公开的SPF地址段,可通过以下方式获取全量IP段:
- 执行DNS查询命令:
dig TXT _spf.google.com - 从返回结果中提取所有
include对应的域(通常为_netblocks.google.com、_netblocks2.google.com、_netblocks3.google.com) - 分别解析上述三个域的TXT记录,获取所有CIDR格式的IP段,即为需要添加到白名单的全部地址
2. 添加MySQL白名单规则
云托管MySQL实例(阿里云RDS、腾讯云CDB、AWS RDS等)
- 登录云厂商控制台,进入目标MySQL实例的配置页面
- 找到「安全组/访问控制/白名单设置」入口
- 逐个添加上一步获取的所有IP段,授权端口默认填3306,保存配置后等待生效即可
自建MySQL实例
- 首先配置服务器防火墙:开放3306端口给上一步获取的所有IP段,根据服务器使用的防火墙工具(iptables、firewalld、安全组等)对应配置规则
- 登录MySQL命令行,执行授权命令允许指定数据库用户从对应IP段访问:
逐行执行所有IP段的授权命令即可生效GRANT ALL PRIVILEGES ON 目标数据库名.* TO '你的数据库用户名'@'授权IP段' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
3. 连接测试
在Google Apps Script编辑器中运行以下测试代码,验证连接是否正常:
function testMysqlConn() { const mysqlHost = '你的MySQL公网访问地址'; const mysqlPort = 3306; const mysqlUser = '数据库用户名'; const mysqlPwd = '数据库密码'; const mysqlDb = '目标数据库名'; const connUrl = `jdbc:mysql://${mysqlHost}:${mysqlPort}/${mysqlDb}?useSSL=false&serverTimezone=UTC`; try { const conn = Jdbc.getConnection(connUrl, mysqlUser, mysqlPwd); console.log('连接成功'); conn.close(); } catch (err) { console.error('连接失败:' + err.toString()); } }
注意事项
- Google的IP段会不定期更新,建议每3个月重新解析一次SPF记录,更新白名单规则避免连接中断
- 若无需公网暴露MySQL,可使用私有代理工具替代公网白名单配置,安全性更高
内容的提问来源于stack exchange,提问作者Iris
相关产品推荐
相关产品推荐

