Laravel跨主机执行迁移时出现root@pop-os访问权限拒绝问题
问题分析与解决
核心问题拆解
从错误信息能看出两个关键异常:
- 用户授权问题:
Access denied for user 'root'@'pop-os'—— 这里的pop-os是你的Pop!_OS客户端机器的主机名,远程MariaDB服务器的root用户未被授权允许从该主机(或对应IP)访问目标数据库。 - 配置读取异常:SQL语句中
table_schema = 92.168.2.166—— 正常应该是你的数据库名Laravel_db,说明Laravel可能缓存了错误的配置,或者.env文件读取异常。
解决步骤
1. 清除Laravel配置缓存
Laravel会缓存配置文件,若之前修改过.env但未清除缓存,可能导致配置读取错误:
php artisan config:clear
2. 修复远程MariaDB的用户授权
登录远程MariaDB服务器(或用你能访问的方式登录),给root用户授权允许从你的Pop!_OS机器访问:
-- 替换成你的Pop!_OS机器的局域网IP(注意错误信息里的92是笔误,应为192) GRANT ALL PRIVILEGES ON Laravel_db.* TO 'root'@'192.168.2.166' IDENTIFIED BY '你的数据库密码'; -- 或者直接通过主机名授权 GRANT ALL PRIVILEGES ON Laravel_db.* TO 'root'@'pop-os' IDENTIFIED BY '你的数据库密码'; -- 刷新权限使设置生效 FLUSH PRIVILEGES;
3. 验证配置正确性
- 确认
.env文件中DB_DATABASE的值确实是Laravel_db,而非IP或其他错误内容。 - 可临时在Laravel项目中打印配置验证:
在routes/web.php中添加:
访问该路由,确认输出的数据库名和主机IP与dd(env('DB_DATABASE'), env('DB_HOST'));.env配置一致。
4. 重新执行迁移
完成上述步骤后,再次执行迁移命令:
php artisan migrate
内容的提问来源于stack exchange,提问作者Hedgelot
相关产品推荐
相关产品推荐

