连接MySQL遇权限拒绝错误:'root'@'localhost'(已用密码)求助
解决MySQL 'root'@'localhost' 访问被拒绝(CodeIgniter+XAMPP场景)
我来帮你解决这个MySQL连接拒绝的问题,结合你用CodeIgniter+XAMPP的场景,这几个步骤大概率能搞定:
第一步:核对CodeIgniter数据库配置
先去你的项目配置文件application/config/database.php里,确认数据库连接参数是否正确,重点检查这几个字段:$db['default'] = array( 'hostname' => 'localhost', // 本地XAMPP用localhost没问题 'username' => 'root', // 用户名正确 'password' => '你的MySQL root密码', // 这里必须和MySQL实际密码一致 'database' => '你的目标数据库名', // 要确保这个数据库已经存在 'dbdriver' => 'mysqli', // 和报错的驱动对应,没问题 // 其他配置保持默认即可 );注意:XAMPP默认安装的MySQL,root密码可能是空的(如果你没特意设置过),可以试试把
password设为空字符串''。第二步:重置MySQL root密码(如果密码记错/丢失)
如果你不确定自己的MySQL root密码,用XAMPP的控制台来重置:- 打开XAMPP控制面板,先停止MySQL服务
- 找到XAMPP安装目录下的
mysql\bin\my.ini(Windows)或my.cnf(Linux/Mac),在[mysqld]节点下添加一行:skip-grant-tables - 重新启动MySQL服务,打开命令提示符,进入
C:\xampp\mysql\bin目录 - 执行命令
mysql -u root,不用输密码就能直接进入MySQL控制台 - 执行以下SQL重置密码:
USE mysql; UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; EXIT; - 回到
my.ini文件,删掉刚才加的skip-grant-tables,再次重启MySQL服务
第三步:确认MySQL用户权限
登录MySQL控制台后,检查root用户的权限配置:SELECT user, host FROM mysql.user WHERE user='root';确保存在
root@localhost的用户条目,如果没有,创建并授权:CREATE USER 'root'@'localhost' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;第四步:检查MySQL服务状态
回到XAMPP控制面板,确认MySQL服务是处于Running状态,如果没启动,点击Start按钮启动服务,这是最容易忽略的点!第五步:排查CodeIgniter模型的数据库调用
你的报错显示Post_model.php第4行调用了database函数,检查模型里的代码:
确保是用CodeIgniter的标准方式加载数据库,比如:public function __construct() { parent::__construct(); $this->load->database(); // 这里不要传错误的配置组参数 }要是你自定义了数据库配置组,要确保调用时指定了正确的组名。
内容的提问来源于stack exchange,提问作者Nikola Kokotovic




