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
相关产品推荐
相关产品推荐

