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

Laravel报SQLSTATE[HY000][1045] root用户数据库访问被拒绝求助

Laravel MySQL 连接1045报错排查方案

问题背景

已在相关技术论坛检索过同类问题的解决方案,始终未能自行修复。

当前配置

.env 文件数据库配置项

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=channelable
DB_USERNAME=root
DB_PASSWORD=root

config/database.php 内 MySQL 连接配置

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'channelable'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', 'root'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

已执行操作与报错信息

已确认数据库用户名、密码为root,执行过以下命令清除配置与应用缓存:

php artisan config:clear
php artisan cache:clear

仍抛出如下错误:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = channelable and table_name = migrations and table_type = 'BASE TABLE')

排查与解决步骤

按优先级从高到低逐一验证:

  • 直接通过命令行验证账号有效性:执行mysql -u root -p,输入密码root,确认能否正常登录。如果命令行同样登录失败,说明root账号密码与预期不符,直接重置root密码即可
  • 处理host匹配差异:当前配置DB_HOST=127.0.0.1,但报错显示连接身份为'root'@'localhost'。MySQL中127.0.0.1走TCP协议连接,localhost走Unix Socket连接,两者是独立的权限主体。直接将.env中DB_HOST改为localhost,重新清缓存重试;也可以登录MySQL后执行授权语句,给root@localhost开放channelable库的全部权限
  • 重建配置缓存:除已执行的清理命令外,额外执行php artisan config:cache重新生成配置缓存文件,避免旧配置残留被加载
  • 验证端口对应服务:执行端口监听检查命令,Linux环境用netstat -anp | grep 3306,Windows环境用netstat -ano | findstr 3306,确认3306端口是目标MySQL实例在监听,排除Docker容器内MySQL、其他预装MariaDB/MySQL实例占用端口导致连错服务的问题
  • 适配集成环境默认配置:如果使用XAMPP、WAMP、MAMP等集成环境,默认root账号密码为空,直接将DB_PASSWORD的值留空,清缓存后重试
  • 适配MySQL8.0认证规则:MySQL8.0+版本默认使用caching_sha2_password认证插件,部分旧版本PDO扩展不支持该认证方式,会被判定为密码错误。登录MySQL后将root账号的认证插件改为mysql_native_password即可
  • 排查环境变量覆盖:确认运行环境没有设置全局的DB_*系列系统环境变量,系统环境变量优先级高于.env文件配置,会导致.env内的配置不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:51:29