XAMPP环境下PHP本地连接MySQL提示Access denied问题求助
解决方案:PHP无法连接XAMPP本地MySQL(Access denied for 'root'@'localhost')
针对你的问题,以下是几个经过验证的解决步骤,按优先级尝试:
1. 修正root用户的认证方式
MySQL的root@localhost账号可能采用了auth_socket认证(依赖系统用户身份,而非密码),这会导致PHP进程(运行在Apache用户下)无法通过密码(即使是空密码)登录。
- 登录phpMyAdmin,打开SQL控制台,执行以下语句:
这里ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES;BY ''保持密码为空,和你代码里的配置一致。执行后重启MySQL服务。
2. 切换连接地址为127.0.0.1
MySQL中localhost默认使用Unix socket连接,而127.0.0.1使用TCP/IP连接,两者的权限规则可能不同。修改你的db.php:
$servername = "127.0.0.1"; // 替换原来的localhost
保存后刷新页面测试。
3. 确认目标数据库存在
重装XAMPP后,之前的pcss数据库可能没有恢复。登录phpMyAdmin检查是否存在该数据库,如果缺失,重新导入之前的备份文件。
4. 创建专用数据库用户(推荐)
依赖root账号连接数据库并不安全,也容易出现权限认证问题。新建一个专门给PHP用的用户:
- 在phpMyAdmin的SQL控制台执行:
CREATE USER 'pcss_dev'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dev_password'; GRANT ALL PRIVILEGES ON pcss.* TO 'pcss_dev'@'localhost'; FLUSH PRIVILEGES; - 修改
db.php的默认分支:
保存后测试连接。default: $username = "pcss_dev"; $password = "dev_password"; $database = "pcss";
5. 检查PHP mysqli扩展状态
确保XAMPP的PHP已启用mysqli扩展:
- 打开XAMPP控制面板,点击PHP的
Config按钮,选择php.ini。 - 查找
extension=mysqli,确保该行没有被注释(前面没有;)。 - 重启Apache服务。
内容的提问来源于stack exchange,提问作者Jason Brody
相关产品推荐
相关产品推荐

