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配置没问题,那大概率是用户权限不够。跟着我一步步操作:
- 登录MySQL终端:
输入root用户的密码回车进入。mysql -u root -p - 查看现有的MySQL用户及允许的访问地址:
看看你SELECT user, host FROM mysql.user;.env里用的用户(比如laravel_user)对应的host是不是localhost或者127.0.0.1(本地虚拟机这两个都适用)。 - 如果没有这个用户,先创建:
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY '你的密码'; - 给用户授权对应数据库的所有权限:
GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'laravel_user'@'localhost'; - 刷新权限让配置生效:
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
相关产品推荐
相关产品推荐

