不能直接在phpmyadmin重置laravel用户密码,因为laravel使用bcrypt加密,而phpmyadmin仅修改字段值、不调用hash::make(),明文或不匹配哈希会导致登录失败;应使用artisan命令或手动生成合法bcrypt哈希再写入。
不能直接在 phpmyadmin 里“重置 laravel 用户密码”——laravel 的密码是 bcrypt 加密的,而 phpmyadmin 只能改数据库字段,不触发 laravel 的密码哈希逻辑。真要改,得走 laravel 自带的机制,或者手动算好 hash 再写进数据库。
为什么不能直接 UPDATE users 表?
Laravel 默认用 bcrypt() 加密密码,存进 users.password 字段的是类似 $2y$10$... 这样的哈希串。如果你在 phpMyAdmin 里手填明文密码(比如填 123456),Laravel 登录时会拿这个明文去比对哈希值,必然失败。
- phpMyAdmin 的“编辑”功能只是改字段值,不调用
Hash::make() - 直接写
UPDATE users SET password = '123456' WHERE id = 1后,Laravel 认为这是个无效哈希,登录报错Invalid credentials - 哪怕你复制别人现成的 bcrypt 哈希粘贴进去,也得确保盐值、轮数和当前 Laravel 配置一致,否则仍可能验证失败
安全又省事的做法:用 Artisan 命令重置
这是 Laravel 官方推荐方式,不碰数据库、不写 SQL、不暴露明文,且自动适配当前 hashing 配置。
- 在项目根目录执行:
php artisan tinker - 输入以下命令(替换邮箱):
App\Models\User::where('email', 'admin@example.com')->update(['password' => bcrypt('newpass123')]); - 退出:
exit - 如果想一步到位(适合开发环境快速测试),可写个临时命令:
php artisan make:command ResetUserPassword,然后在handle()里调用Hash::make()
非要用 phpMyAdmin?那必须手算 bcrypt 哈希
仅限紧急排查或无法连终端的场景。你得自己生成合法哈希,再填进 users.password 字段。
- 在本地运行一段 PHP:
<?php echo bcrypt('mynewpass'); ?>(需 Laravel 环境)或用在线工具(注意别传敏感密码) - 把输出结果(如
$2y$10$abc123...)复制进 phpMyAdmin 的password字段 - 确认
users表中该用户email和password字段都已更新,且无空格/换行 - 别用
PASSWORD()或MD5()—— MySQL 原生函数生成的哈希 Laravel 根本不认
真正容易被忽略的是:Laravel 的密码重置流程(邮件令牌)和直接改数据库是两套逻辑。前者走 password_reset_tokens 表 + 邮件链路,后者绕过所有安全校验。除非你明确知道后果,否则别在生产环境手动改 users.password 字段。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











