执行php artisan migrate时遇MySQL 1045权限错误,求解决方案
解决Laravel
php artisan migrate 1045权限错误 核心问题分析
错误SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)明确指向:使用空密码的root用户无法连接本地MySQL服务,要么你的MySQL root用户设置了密码,要么localhost的连接方式不符合MySQL的权限规则。
具体修复步骤
1. 确认MySQL root用户的密码
打开终端/命令行,直接尝试连接MySQL:
mysql -u root -p
- 如果需要输入密码才能登录,说明root用户已设置密码,把该密码填入
.env的DB_PASSWORD字段。 - 如果无需密码直接登录成功,跳过此步骤,调整连接方式。
2. 修正.env配置
根据验证结果修改.env文件:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 # 替换localhost,部分MySQL版本对localhost和127.0.0.1的权限规则不同 DB_PORT=3306 DB_DATABASE=e-commerce-web-proto DB_USERNAME=root DB_PASSWORD=你的MySQLroot密码 # 有密码则填,无密码留空
3. 重置配置缓存
修改.env后,必须先清除旧缓存再重新生成:
php artisan config:clear php artisan config:cache
注意:
config:cache会将配置生成静态文件,修改.env后不清除缓存的话,新配置不会生效。
4. 验证连接并执行迁移
用Laravel自带命令测试数据库连接:
php artisan db:connect
连接成功后,重新执行迁移:
php artisan migrate
5. 备选:给root用户授权数据库访问权限
如果上述步骤无效,可能是root用户没有e-commerce-web-proto数据库的访问权限。登录MySQL后执行:
-- 针对localhost连接的授权 GRANT ALL PRIVILEGES ON `e-commerce-web-proto`.* TO 'root'@'localhost'; FLUSH PRIVILEGES; -- 或者针对127.0.0.1连接的授权 GRANT ALL PRIVILEGES ON `e-commerce-web-proto`.* TO 'root'@'127.0.0.1'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者Arya Aji
相关产品推荐
相关产品推荐

