如何在phpMyAdmin中添加/修改带bcrypt加密密码的管理员账号
解决方法
方案1:直接生成bcrypt哈希更新数据库
系统登录时会通过password_verify()验证密码,直接存储明文必然失败。你可以先生成符合要求的bcrypt哈希值,再更新数据库:
- 打开终端,运行以下PHP代码生成哈希:
复制输出的长字符串(即加密后的密码)。<?php echo password_hash('你的新密码', PASSWORD_BCRYPT); ?> - 执行SQL语句更新管理员密码:
注意替换UPDATE admin_table SET acct_password = '生成的哈希字符串' WHERE username = '目标管理员用户名';admin_table为实际管理员表名,username为你的管理员标识字段(比如ID或用户名)。
方案2:写临时密码重置脚本
如果嫌手动生成麻烦,可以在网站根目录新建一个临时脚本(比如reset_pwd.php),内容如下:
<?php // 替换为你的数据库信息 $db_host = 'localhost'; $db_name = 'your_db'; $db_user = 'db_user'; $db_pass = 'db_password'; $target_admin = 'admin_username'; $new_password = 'your_new_password'; try { $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $hashed_pwd = password_hash($new_password, PASSWORD_BCRYPT); $stmt = $pdo->prepare("UPDATE admin_table SET acct_password = ? WHERE username = ?"); $stmt->execute([$hashed_pwd, $target_admin]); echo "密码更新成功"; } catch(PDOException $e) { echo "错误: " . $e->getMessage(); } $pdo = null; ?>
- 替换所有占位符为你的实际信息
- 在浏览器访问这个脚本,执行完成后立即删除该文件,避免安全风险
方案3:添加新管理员的临时脚本
如果需要新增管理员,可使用类似的临时脚本(比如add_admin.php):
<?php $db_host = 'localhost'; $db_name = 'your_db'; $db_user = 'db_user'; $db_pass = 'db_password'; $new_admin_user = 'new_admin'; $new_admin_pwd = 'new_admin_password'; // 按需添加其他字段,比如邮箱、权限等 try { $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $hashed_pwd = password_hash($new_admin_pwd, PASSWORD_BCRYPT); $stmt = $pdo->prepare("INSERT INTO admin_table (username, acct_password, email) VALUES (?, ?, ?)"); $stmt->execute([$new_admin_user, $hashed_pwd, 'admin@example.com']); echo "新管理员添加成功"; } catch(PDOException $e) { echo "错误: " . $e->getMessage(); } $pdo = null; ?>
同样,执行后立即删除脚本。
注意事项
- 操作前务必备份数据库,防止误操作导致数据丢失
- 临时脚本使用后必须删除,避免被未授权访问
- 后续建议给脚本补充正规的管理员密码修改、注册功能,从根源解决问题
内容的提问来源于stack exchange,提问作者Maxwell Manu
相关产品推荐
相关产品推荐

