如何修改Node.js应用管理员bcrypt哈希密码或新增管理员账户
Node.js 管理员账号登录问题解决方案
之前手动修改数据库不生效的常见原因
- 操作后未在phpMyAdmin中提交事务,部分版本默认开启手动提交,不点确认按钮修改不会实际落库
- 手动填入的密码哈希不符合项目规则:项目使用
bcryptjs库、固定9轮盐生成哈希,自行生成的哈希如果盐轮次不对、格式不匹配,校验时会直接返回不通过 - 操作了错误的库/表:项目连接的数据库和你在phpMyAdmin中打开的不是同一个,常见于本地同时存在开发库、测试库的场景
方案1:重置现有管理员账号信息
按以下步骤操作可以保证密码哈希完全匹配项目校验规则:
- 在项目根目录新建临时脚本
genHash.js,写入以下代码:
const bcrypt = require("bcryptjs"); // 替换为你要设置的新管理员密码 const yourNewPassword = "Admin@123456"; const validHash = bcrypt.hashSync(yourNewPassword, 9); console.log("符合规则的密码哈希值:", validHash);
- 终端进入项目根目录,执行命令
node genHash.js,复制输出的完整哈希字符串,注意不要带多余的空格、换行 - 打开phpMyAdmin,找到项目实际使用的用户表,定位到原有管理员记录:
- 将邮箱字段修改为你可正常使用的邮箱地址
- 将密码字段的值替换为上一步复制的哈希值
- 保存修改并确认记录已更新
- 返回登录页使用新邮箱、新密码即可登录,登录成功后删除临时创建的
genHash.js文件
方案2:直接新增全新管理员账号
如果找不到原有管理员记录,可以直接通过脚本写入新的管理员账号:
- 在项目根目录新建临时脚本
addAdmin.js,写入以下代码,注意根据你项目实际的用户表字段调整属性:
const bcrypt = require("bcryptjs"); const db = require("../models/db"); // 以下配置按实际需求修改 const newAdminConfig = { user_email: "your-admin@example.com", // 你的管理员邮箱 user_password: bcrypt.hashSync("YourAdminPass123!", 9), // 你的管理员密码 user_role: 1, // 角色值按项目规则设置,通常1代表超级管理员 user_status: 1 // 保证账号为启用状态 }; db.query("INSERT INTO f_users SET ?", newAdminConfig, (err, result) => { if (err) { console.error("管理员创建失败:", err); process.exit(1); } console.log("新管理员创建成功,ID为:", result.insertId); process.exit(0); });
- 终端进入项目根目录执行
node addAdmin.js,控制台提示创建成功后,即可用填写的邮箱密码登录 - 登录成功后删除临时创建的
addAdmin.js文件
注意:操作前先核对项目配置文件中的数据库连接信息,确认你操作的数据库、表和项目运行时连接的完全一致,避免改到无效库表。
内容的提问来源于stack exchange,提问作者Titus
相关产品推荐
相关产品推荐

