本地运行Yii2项目遇CDbConnection数据库连接错误求助
解决Yii2本地运行时MySQL连接1045权限错误
核心问题分析
错误SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)说明本地MySQL拒绝了root用户无密码的登录请求,本地MySQL的用户权限、密码规则与服务器端完全独立,服务器端的权限配置不影响本地连接。
分步解决步骤
验证本地root用户的登录权限
打开终端/命令提示符,执行:mysql -u root- 如果登录失败,说明本地
root用户设置了密码,直接修改Yii2配置文件里的password字段为本地MySQL的root密码即可。 - 如果登录成功,继续下一步排查。
- 如果登录失败,说明本地
检查
root@localhost的权限配置
登录MySQL后执行以下命令,确认是否存在root@localhost用户:SELECT user, host FROM mysql.user WHERE user='root';- 若不存在
root@localhost条目,创建并授权:CREATE USER 'root'@'localhost' IDENTIFIED BY ''; GRANT ALL PRIVILEGES ON serena.* TO 'root'@'localhost'; FLUSH PRIVILEGES; - 若已存在但密码不为空,要么修改Yii配置的
password为对应值,要么清空该用户密码:ALTER USER 'root'@'localhost' IDENTIFIED BY ''; FLUSH PRIVILEGES;
注意:
root@%和root@localhost是两个独立的用户,服务器端的root@%权限不影响本地root@localhost的登录逻辑。- 若不存在
确认Yii配置文件路径正确
确保修改的main.php是本地项目的正确配置文件:- Yii2基础版:
config/web.php - Yii2高级版:
frontend/config/main.php(前台)或backend/config/main.php(后台)
- Yii2基础版:
测试基础数据库连接(排除Yii框架问题)
在项目根目录新建test_db.php,写入以下代码并运行:<?php $dsn = 'mysql:host=127.0.0.1;dbname=serena'; $user = 'root'; $password = ''; try { $dbh = new PDO($dsn, $user, $password); echo "数据库连接成功"; } catch (PDOException $e) { echo '连接失败: ' . $e->getMessage(); } ?>若脚本报错,问题出在MySQL配置;若成功,检查Yii框架的其他配置(如是否有环境变量覆盖了数据库配置)。
内容的提问来源于stack exchange,提问作者sanxerta
相关产品推荐
相关产品推荐

