WAMP环境应用连接MySQL报SQLSTATE[HY000] [1045]错误如何解决?
WAMP环境MySQL 1045连接报错解决步骤
报错SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)的核心含义是:当前请求使用空密码登录root账户被MySQL拒绝,修改密码后依然报错可按以下顺序排查:
- 确认使用的是WAMP自带的MySQL实例
部分设备同时安装过独立版MySQL,WAMP启动的MySQL端口可能被占用,实际运行的是之前安装的MySQL,root密码和你设置的WAMP MySQL密码不一致。可以右键WAMP图标,选择「MySQL」-「查看端口使用情况」,确认运行端口为3306,且对应进程是WAMP的MySQL进程。 - 校验root账户的权限配置
打开WAMP自带的phpMyAdmin,登录后进入「用户账户」页面,找到root@localhost账户,确认:- 该账户的「密码」列不是「无」
- 「主机」列确实为
localhost - 该账户拥有
readersnewcenter库的全部权限
- 修正连接代码
你当前代码中的$password变量为空值,确认修改后已保存文件,且不存在其他上层代码覆盖该变量。同时建议将连接地址改为127.0.0.1避免socket连接权限异常,补充字符集配置避免后续数据乱码,修正后示例如下:public function connect() { try { $username = "root"; $password = "你的MySQL root账户实际密码"; // 替换为实际密码 $db = new PDO('mysql:host=127.0.0.1;dbname=readersnewcenter;charset=utf8mb4', $username, $password); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; } catch (PDOException $e) { print "Error: " . $e->getMessage() . "<br/>"; die(); } } - 重置root密码(以上步骤无效时使用)
右键WAMP图标,选择「MySQL」-「MySQL控制台」,直接回车进入(默认无密码),执行以下命令重置密码:
执行完成后将连接代码中的ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;$password改为设置的新密码即可。
内容的提问来源于stack exchange,提问作者état de choses
相关产品推荐
相关产品推荐

