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

Laravel 11连接数据库遇SQLSTATE[HY000] [1045]权限拒绝问题求助

解决Laravel 11数据库连接1045访问拒绝问题

1. 修正数据库用户授权语句

你执行的授权对象是user@localhost,但错误提示里的数据库用户是solvrcyi_admin,两者不匹配。执行正确的授权命令:

GRANT ALL PRIVILEGES ON *.* TO 'solvrcyi_admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

FLUSH PRIVILEGES;用于让MariaDB立即加载新的权限规则,无需重启服务。

2. 严格校验配置文件一致性

确认.env和database.php中的数据库用户名完全为solvrcyi_admin,注意避免空格、大小写差异(虽然MySQL/MariaDB默认用户名不区分大小写,但严格匹配更稳妥):

  • .env文件示例:
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=你的目标数据库名
    DB_USERNAME=solvrcyi_admin
    DB_PASSWORD=你的数据库密码
    
  • database.php的mysql配置需与.env对应:
    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        // 其他默认配置项...
    ],
    

3. 清除Laravel配置缓存

Laravel会缓存配置文件,即使修改了.env,旧配置可能仍在生效,执行以下命令清空缓存:

php artisan config:clear
php artisan cache:clear

4. 验证用户数据库访问权限

在MariaDB控制台用solvrcyi_admin登录,确认能正常访问目标数据库和users表:

mysql -u solvrcyi_admin -p
-- 登录后执行
USE 你的目标数据库名;
SELECT * FROM users LIMIT 1;

如果此步骤能成功执行,说明数据库层面权限无问题,问题大概率出在Laravel的配置缓存或配置细节错误。

5. 检查socket连接配置(可选)

若你的MariaDB使用socket而非TCP/IP连接,需在database.php中添加socket配置:

'mysql' => [
    // 其他配置项...
    'unix_socket' => env('DB_SOCKET', '/var/run/mysqld/mysqld.sock'),
],

对应的.env中可补充:DB_SOCKET=/var/run/mysqld/mysqld.sock(路径需根据你的系统实际情况调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:47:36