Laravel执行php artisan命令报错 root@localhost数据库访问被拒且无法登录phpMyAdmin
Laravel数据库访问权限报错排查解决步骤
1. 确认MySQL服务运行状态
- Windows系统:打开服务管理器,查找MySQL/MariaDB对应的服务,确认状态为「正在运行」,未运行则手动启动服务。
- Linux/macOS系统:运行命令
systemctl status mysql(Linux)或brew services list(macOS Homebrew安装的MySQL)查看服务状态,异常的话先重启服务。
2. 验证数据库账号密码有效性
这个报错的核心原因是数据库账号密码校验失败,优先做本地登录验证:
- 打开终端运行命令
mysql -u root -p,回车后输入你预设的root账号密码,验证是否能正常进入MySQL命令行。- 可以正常登录:说明账号密码本身没问题,问题出在Laravel配置或phpMyAdmin配置。
- 无法正常登录:说明root账号密码错误或权限配置异常,直接跳转到第4步操作。
90%以上的同类报错都是因为配置文件里的密码和实际数据库密码不匹配导致,优先做这一步验证
3. 修正Laravel项目配置
如果上一步本地登录MySQL正常,修改Laravel项目根目录下的.env配置文件:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=你提前创建好的Laravel对应数据库名 DB_USERNAME=root DB_PASSWORD=你实际的MySQL root账号密码
注意:Laravel默认生成的
.env文件中DB_PASSWORD默认是空值,如果你的root账号设置了密码,必须修改为对应密码。
修改完配置后运行php artisan config:clear清空项目配置缓存,再重试php artisan serve、php artisan migrate命令即可。
4. 重置MySQL root账号密码与权限
如果第二步本地也无法登录MySQL,按以下步骤重置root账号信息:
- 停止正在运行的MySQL服务
- 用跳过权限校验的模式启动MySQL:
- Windows:打开cmd进入MySQL的bin目录,运行
mysqld --skip-grant-tables,保持这个cmd窗口不关闭 - Linux/macOS:运行
sudo mysqld_safe --skip-grant-tables &
- Windows:打开cmd进入MySQL的bin目录,运行
- 新开一个终端窗口,直接运行
mysql -u root即可无密码登录MySQL命令行 - 依次执行以下SQL命令:
FLUSH PRIVILEGES; -- 重置root密码,把后面的'你的新密码'替换成你要设置的密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; -- 给root账号赋所有权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; - 退出MySQL命令行,重启MySQL常规服务,用新密码测试登录,确认正常后再更新Laravel和phpMyAdmin的配置即可。
5. phpMyAdmin额外排查
如果MySQL本地登录正常但还是无法访问phpMyAdmin,修改phpMyAdmin根目录下的config.inc.php配置:
- 确认
$cfg['Servers'][$i]['user']值为root,$cfg['Servers'][$i]['password']值为你实际的root账号密码 - 确认
$cfg['Servers'][$i]['host']值为127.0.0.1或者localhost,和MySQL的监听地址一致
内容的提问来源于stack exchange,提问作者oiram123
相关产品推荐
相关产品推荐

