You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

连接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的控制台来重置:

    1. 打开XAMPP控制面板,先停止MySQL服务
    2. 找到XAMPP安装目录下的mysql\bin\my.ini(Windows)或my.cnf(Linux/Mac),在[mysqld]节点下添加一行:skip-grant-tables
    3. 重新启动MySQL服务,打开命令提示符,进入C:\xampp\mysql\bin目录
    4. 执行命令mysql -u root,不用输密码就能直接进入MySQL控制台
    5. 执行以下SQL重置密码:
      USE mysql;
      UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root' AND Host='localhost';
      FLUSH PRIVILEGES;
      EXIT;
      
    6. 回到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

火山引擎 最新活动