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

PHP连接SQL数据库报错(HY000/2002): Operation timed out(macOS环境)

排查PHP连接MySQL超时(HY000/2002)问题

报错与代码信息

报错内容:

Warning: mysqli_connect(): (HY000/2002): Operation timed out in /Users/Ahmead/Sites/PHPTest/myTutorials/dbconnect.php on line 12
cannot connect to database fileld:Operation timed out

连接代码:

<?php
$host="172.0.0.1";
$user="root";
$password="";
$database="admins";

$connect= mysqli_connect($host, $user, $password, $database);

if(mysqli_connect_errno()){
    die("cannot connect to database fileld:". mysqli_connect_error());
}
else {
    echo 'Database is connected'; 
}
?>

具体排查步骤

  • 确认数据库服务运行状态
    先检查MySQL/MariaDB是否正在运行。在macOS终端执行:

    mysql.server status
    

    若未启动,执行以下命令开启服务:

    mysql.server start
    
  • 修正主机地址配置
    代码中使用的172.0.0.1是内网IP,本地数据库通常使用127.0.0.1或localhost。尝试修改$host值:

    $host = "127.0.0.1";
    // 或者使用localhost(部分环境下会优先用Unix套接字,规避网络层问题)
    $host = "localhost";
    
  • 检查数据库端口设置
    如果数据库修改了默认的3306端口,需在连接时指定端口参数:

    $connect = mysqli_connect($host, $user, $password, $database, 3307); // 替换为实际端口号
    

    可通过查看数据库配置文件(如my.cnf)中的port项确认端口。

  • 验证数据库绑定地址与防火墙

    • 查看数据库配置文件中的bind-address,确保其允许当前PHP环境的IP访问。本地测试可设置为0.0.0.0(允许所有IP)或127.0.0.1。
    • 确认本地防火墙未拦截3306端口的网络请求。
  • 检查数据库用户权限
    root账户可能没有从172.0.0.1访问admins数据库的权限。登录数据库执行以下命令授权:

    GRANT ALL PRIVILEGES ON admins.* TO 'root'@'172.0.0.1' IDENTIFIED BY '';
    FLUSH PRIVILEGES;
    

    若root账户有密码,将''替换为实际密码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:20:30