如何通过phpMyAdmin修改Laravel用户的密码_使用Bcrypt哈希格式更新User表字段

雨雪大大_6795

雨雪大大_6795

2026-03-29

1168人浏览

原创

直接在phpMyAdmin更新password字段不行,因为Laravel要求该字段必须是Bcrypt哈希值(约60字符,形如$2y$...),而非明文或MD5等其他哈希;手动填写明文或错误哈希会导致Hash::check()验证失败,登录报“These credentials do not match our records”。

phpMyAdmin 里直接更新 password 字段为什么不行

因为 laravel 的 password 字段必须是 bcrypt 哈希值,不是明文或其它哈希(如 md5、sha256)。直接在 phpmyadmin 里填入明文密码,比如 123456,用户登录时会失败——laravel 用 hash::check() 验证时会比对 bcrypt 哈希,而明文显然不匹配。

常见错误现象:
– 用户登录报 These credentials do not match our records.
– 查看数据库发现 password 字段是纯文本或长度固定(如 32 位),而非 60 字符左右的 Bcrypt 字符串(形如 $2y$10$...)

  • 不要手动拼接 Bcrypt 字符串;Bcrypt 依赖 salt 和 cost factor,手写极易出错
  • phpMyAdmin 不内置 Bcrypt 函数,MD5() 或 SHA2() 等 MySQL 内置函数完全无效
  • 如果项目启用了 bcrypt 的变种(如 argon2id),更不能混用——得先确认 config/hashing.php 中的 driver

用 Laravel Tinker 生成合法 Bcrypt 密码最稳妥

这是推荐做法:绕过 UI,用 Laravel 自身的哈希机制生成值,确保与运行时完全一致。

操作步骤:

  • 进入项目根目录,执行 php artisan tinker
  • 输入 echo Hash::make('your_new_password');(注意单引号包裹明文)
  • 复制输出的完整字符串(以 $2y$ 或 $2b$ 开头,共约 60 字符)
  • 回到 phpMyAdmin,找到 users 表 → 编辑对应行 → 把 password 字段粘贴为该字符串 → 执行保存

为什么可靠?
– Hash::make() 自动读取 config/hashing.php 配置(如 rounds),和登录验证逻辑完全同步
– 不依赖 MySQL 版本或服务器环境
– 支持 Laravel 5.8+ 的默认 driver 切换(比如从 bcrypt 换成 argon2id)

不想开终端?用一小段 PHP 脚本临时生成

如果无法访问命令行(如共享主机),可上传一个临时脚本,用浏览器访问它来获取哈希值。

新建文件 hashgen.php,内容如下:

#!/usr/bin/env php
<?php require __DIR__.'/vendor/autoload.php';
use Illuminate\Hashing\BcryptHasher;

$hasher = new BcryptHasher();
echo $hasher->make($argv[1] ?? 'secret');
?>

然后在终端运行:php hashgen.php mypass123;或通过 Web 访问(需确保 autoload.php 路径正确,且不暴露在生产环境)。

  • 别把 hashgen.php 留在生产服务器上,用完立刻删
  • 如果项目用了自定义 HashManager(例如重写了 createBcryptDriver),优先走 app('hash') 而非直接 new BcryptHasher
  • Web 方式调用时,避免 GET 参数传密码(会进 access log),改用 POST 或 CLI 更安全

更新后仍登录失败?重点检查这三处

生成和写入都对了,但还是登不进去,大概率是其他环节干扰了验证流程。

  • 确认修改的是正确的 users 表 —— 多租户或自定义认证模型时,可能实际用的是 admins、members 等表
  • 检查用户记录的 email 或 username 是否被误改,导致查不到该记录(Laravel 默认按 email 查,不是 ID)
  • 查看 config/auth.php 中 'provider' => 'users' 对应的 model 和 table 配置是否匹配当前表结构

真正麻烦的点往往不在哈希本身,而在“你以为在改 A 表,其实登录走的是 B 表”,或者字段名被重命名为 passwd、pwd 却没同步改配置。动手前,先 dd(Auth::getProvider()->getModel()) 确认模型类,比反复试密码更省时间。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

11064

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6421

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2155

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4068

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4774

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3751

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5377

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4222

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12122

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.8万人学习