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

Hyper-V虚拟机Ubuntu系统MySQL 1045访问拒绝错误求助

解决Laravel php artisan migrate 出现MySQL 1045权限拒绝错误

嘿,刚接触编程就遇到这种权限问题太正常了,别慌!咱们一步步排查新手最容易踩的几个坑:

1. 先核对.env文件的数据库配置

这是新手最容易出错的地方!项目根目录下的.env文件里,以下几个参数必须和你的MySQL实际配置完全匹配:

  • DB_HOST: 如果是本地虚拟机,试试127.0.0.1(有时候localhost会用socket连接,可能出问题)
  • DB_PORT: 默认是3306,除非你手动修改过MySQL端口
  • DB_DATABASE: 要确保这个数据库已经在MySQL里创建好了
  • DB_USERNAME: 你用来连接MySQL的用户名(建议给项目单独建用户,别直接用root)
  • DB_PASSWORD: 这个一定要仔细核对!新手常犯的错:大小写打错、多了空格、或者和创建用户时的密码不一致

2. 检查MySQL用户的权限是否正确

如果.env配置没问题,那大概率是用户权限不够。跟着我一步步操作:

  1. 登录MySQL终端:
    mysql -u root -p
    
    输入root用户的密码回车进入。
  2. 查看现有的MySQL用户及允许的访问地址:
    SELECT user, host FROM mysql.user;
    
    看看你.env里用的用户(比如laravel_user)对应的host是不是localhost或者127.0.0.1(本地虚拟机这两个都适用)。
  3. 如果没有这个用户,先创建:
    CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY '你的密码';
    
  4. 给用户授权对应数据库的所有权限:
    GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'laravel_user'@'localhost';
    
  5. 刷新权限让配置生效:
    FLUSH PRIVILEGES;
    

3. 确认MySQL服务是否在运行

新手偶尔会忘记启动MySQL服务!在Ubuntu里检查状态:

sudo systemctl status mysql

如果显示不是active (running),就启动服务:

sudo systemctl start mysql

4. 清除Laravel的配置缓存(新手极易忽略)

有时候你改了.env文件,但Laravel还在使用旧的缓存配置。执行下面的命令清除缓存:

php artisan config:clear

然后再重新运行迁移命令:

php artisan migrate

5. 确认目标数据库已经创建

登录MySQL后,执行这条命令看看数据库是否存在:

SHOW DATABASES;

如果找不到你.env里的DB_DATABASE对应的数据库,就创建它:

CREATE DATABASE 你的数据库名;

小测试技巧

如果上面的步骤都试过还是不行,可以临时把.env里的DB_USERNAME改成root,密码换成root的密码试试迁移。如果能成功,说明问题肯定出在你创建的项目用户权限上,回到第二步重新检查用户的授权配置就行(生产环境千万不要用root用户连接数据库哦!)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:44