You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Web服务器无法连接外部MySQL数据库问题求助

针对树莓派上PHP无法连接外部数据库的排查方案

以下是几个针对性的排查方向和解决步骤:

  • 先确认网络连通性
    在树莓派终端执行telnet 外部数据库IP 3306或者nc -zv 外部数据库IP 3306,测试是否能连通数据库端口。如果不通:

    • 检查外部数据库的防火墙/安全组,确认是否允许树莓派的公网/内网IP访问3306端口;
    • 检查树莓派所在网络的路由规则,是否有端口转发限制;
    • 查看树莓派本地防火墙(如ufw),执行sudo ufw status确认是否禁止了3306端口的出站请求,若有则执行sudo ufw allow out 3306/tcp开放。
  • 检查PHP mysqli扩展状态
    执行php -m | grep mysqli,如果没有输出意味着未安装扩展,执行sudo apt install php-mysqli安装,随后重启Web服务(如Apache:sudo systemctl restart apache2)。
    也可以通过phpinfo()查看PHP配置,对比Mac上的mysqli相关参数,确认是否存在配置差异(如连接超时时间设置过短)。

  • 修复异常捕获逻辑
    mysqli默认不会抛出异常,所以直接用try/catch无法捕获错误。需要先开启异常模式,再进行连接:

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    try {
        $conn = mysqli_connect($host, $user, $pw, $database);
    } catch (mysqli_sql_exception $e) {
        echo "连接错误:" . $e->getMessage();
        exit;
    }
    

    这样就能输出具体错误信息,定位问题根源。

  • 排查DNS解析问题
    如果连接时使用的是域名而非IP,尝试替换为数据库的直接IP地址。同时在树莓派终端执行nslookup 数据库域名,确认解析结果是否正确,若异常则修改树莓派的DNS服务器配置。

  • 确认数据库账号权限
    登录外部树莓派的数据库,执行SELECT user, host FROM mysql.user;,查看目标账号的host字段是否允许树莓派的IP访问(或设为%允许任意IP)。若权限不足,执行授权命令:

    GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'树莓派IP' IDENTIFIED BY '密码';
    FLUSH PRIVILEGES;
    

内容的提问来源于stack exchange,提问作者n1klas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:15:22