开发者社区 > 云原生 > Serverless > 正文

新手请教下使用问题,函数访问数据库总是不通,执行是成功的,白名单也添加了,不知道是哪里设置不对

新手请教下使用问题,函数访问数据库总是不通,执行是成功的,白名单也添加了,不知道是哪里设置不对

展开
收起
古拉古拉 2023-05-08 12:26:19 103 0
5 条回答
写回答
取消 提交回答
  • 数据库访问失败。

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-05-08 17:29:34
    赞同 展开评论 打赏
  • 大鹏一日同风起,扶摇直上九万里

    你好, 这种问题建议附上报错信息。

    通过报错信息,逆向排查,70%以上问题会迎刃而解。

    其次,可以换思路排查,比如函数下访问这个数据库不行,那换ecs下能否行得通?

    或者函数下换别的数据库能否行呢? 这就是20%的问题也能解决了。

    剩下的10% 才需要琢磨和请教。

    2023-05-08 15:47:12
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    如果您使用阿里云函数访问数据库总是不通,建议您检查以下几个方面:

    1. 数据库的连接方式是否正确。阿里云函数可以通过 VPC 环境连接到阿里云数据库,需要确保数据库和函数在同一个 VPC 内,或者通过 VPC 专线/VPN 连接。同时,需要确保数据库的端口和访问地址正确。

    2. 数据库的白名单是否设置正确。如果您使用的是阿里云 RDS 数据库,需要在 RDS 控制台中设置白名单,允许函数所在的 VPC 内网 IP 访问数据库。如果您使用的是自建数据库,需要确保数据库的防火墙设置正确,允许函数所在的 VPC 内网 IP 访问数据库。

    3. 函数的运行角色是否具备访问数据库的权限。在函数计算控制台中,需要为函数指定一个运行角色,该角色需要具备访问数据库的权限。如果您使用的是阿里云 RDS 数据库,可以通过 RAM 控制台为角色授权。如果您使用的是自建数据库,需要在数据库中设置相应的用户和权限,确保函数可以访问数据库。

    4. 函数代码中访问数据库的方式是否正确。在函数代码中,需要使用正确的方式访问数据库。如果您使用的是 Python,可以使用 pymysqlcx_Oracle 等库来连接数据库。需要注意的是,连接数据库的方式需要根据数据库类型和版本进行相应的调整。

    2023-05-08 15:29:19
    赞同 展开评论 打赏
  • 检查网络配置:确保您的数据库服务器的防火墙不会阻止您连接到数据库。另外,检查您的网络配置,确保 DNS、端口和 IP 地址都正确。

    检查 SQL 语句:确认 SQL 语句是否能够正确地执行,并且没有引起任何错误或异常。可以使用 SQL 客户端来检查这些查询。

    检查连接字符串:确保您的连接字符串包含了所有必要的参数,比如用户名和密码,并且格式正确。在测试时,您还可以尝试使用连接字符串中的 IP 地址作为主机名,以减轻域名解析问题。

    检查数据库驱动程序:确保您正在使用正确的数据库驱动程序,并检查该驱动程序是否已经完全安装。如果该驱动程序版本不兼容 Python 或操作系统,则可能会出现问题。

    检查权限:确保您具有访问所需表格/数据库的权限,您也应该确认您的数据库用户在白名单上的IP范围内。

    2023-05-08 13:33:37
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    函数计算访问数据库不通的话通常来说是网络配置相关问题导致的,具体的可以参考下面的情况:

    一.通过VPC访问数据库

    1.请确保创建的数据库实例与访问数据库的函数在同一地域。 2.如果报错AccessDenied,错误码为403,请确保提供对ENI的操作授权。 3.如果报错InvalidArgument,错误码为400,请确保VPC,VSwitch和安全组配置正确。 4.请检查数据库是否设置了IP地址白名单。如果设置了白名单,则需要设置相应的VPC内网IP地址段和交换机内网IP地址段。您可以将白名单设置为0.0.0.0/0,允许所有IP地址访问。更多信息,请参见配置数据库访问IP地址白名单。 5.请确保安全组出口方向放行数据库的端口和内网IP地址段。 6.如果报错ResourceExhausted,错误码为429,请检查交换机的IP网段内是否可用IP地址数量不足。自动配置提供的网络前缀长度为24,可用IP地址总数量为252个。如果实例数量过多,有可能会超出限制。需手动调整交换机IP地址网段,以及对应的安全组。

    二.通过公网访问数据库 1.请确保服务的网络配置中已开启公网访问。更多信息,请参见配置网络。 2.如果数据库设置了固定IP地址白名单,请确保为函数计算配置固定公网IP地址。函数计算中,运行函数的实例由函数计算动态分配,IP地址不固定。使用公网访问数据库,需要配置固定公网IP地址

    三.数据库侧网络原因 您可以在其他服务侧配置与函数计算类似的网络环境,并尝试是否能使用telnet命令连接数据库。如果可以连接,则可以排除数据库侧网络原因。

    2023-05-08 13:26:22
    赞同 展开评论 打赏

快速交付实现商业价值。

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载