You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地环境出现mysqli_connect 1045权限错误,求解决方案

解决 mysqli_connect(): Access denied for user ''@'localhost' 错误

核心问题分析

错误提示里的用户是空字符串,说明你的应用没有正确读取到配置里的root用户名,或者配置文件根本没被加载。

分步解决方案

  • 先确认应用实际读取的配置
    在应用的数据库连接代码附近,加一行调试代码输出实际的配置值:

    var_dump($_ENV['DB_USER'], $_ENV['DB_PASS']); // 框架环境可改用对应配置读取方式,比如Laravel的config('database.connections.mysql.username')
    

    如果输出为空:

    • 检查配置文件(如.env)的路径是否正确,是否在应用可读取的目录下;
    • 若用Laravel等带配置缓存的框架,执行php artisan config:clear清除缓存;
    • Linux/macOS环境注意文件名大小写(.env和.Env是不同文件)。
  • 验证MySQL root用户的登录权限
    打开终端直接测试登录:

    mysql -u root -p
    

    按回车(对应你配置的空密码),如果登录失败,说明root用户不允许无密码登录:

    1. 停止MySQL服务;
    2. 以跳过权限验证的方式启动:mysqld --skip-grant-tables;
    3. 重新打开终端登录MySQL,执行以下命令设置无密码权限:
      UPDATE mysql.user SET authentication_string = '', plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
      FLUSH PRIVILEGES;
      
    4. 重启MySQL服务,再测试登录。
  • 区分phpMyAdmin配置和应用配置
    你贴的config.inc.php是phpMyAdmin的配置文件,和你的应用数据库连接完全无关,修改这个不会解决应用的连接问题,别浪费时间在这上面。

  • 尝试替换localhost为127.0.0.1
    MySQL对localhost默认用socket连接,127.0.0.1用TCP连接,把配置里的DB_HOST=localhost改成DB_HOST=127.0.0.1,再测试连接。

  • 确认用户数据库权限
    即使root能登录,也要确保它有权限访问projeto_todobicho数据库:

    GRANT ALL PRIVILEGES ON projeto_todobicho.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    

内容的提问来源于stack exchange,提问作者ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:40:37