Halo重置后台登录密码 返回首页

发表于 2022-01-13 | 本文共 401 字

Halo重置后台登录密码

这个问题还要从升级博客说起,以前一直没咋管过版本升级,但是最近在闲来无事逛Halo社区时发现了一些新版本上比较好的特性,而且最新版升级了部分依赖中的 log4j2 版本,修复了可能由 log4j2 导致的安全漏洞,这必须得支持一下啊:wink:

于是在一个夜黑风高的晚上我开始对博客下手了,开始升级版本之前先是用博客自带的备份功能做了整站备份,由于当初是用docker部署的Halo,所以接着就停止并删除了当前运行中的容器,接下来似乎一切都是那么顺理成章,拉取最新的 Halo 镜像然后创建容器,接着把备份的整站数据上传到用户目录下解压,到这里就已经OK了,可是这时就出现了问题,博客访问正常但是后台登录不了,提示用户名密码错误,去社区找了相关的帖子,发现了如下两种方法:

基于整站备份的迁移:Halo的所有数据都是存放于当前用户目录的工作目录.halo下的。当然,这仅限于使用 H2 Database 的情况下,如果你使用的 MySQL,那么还需要手动导出MySQL数据。所以,迁移服务器仅仅需要需要将工作目录的备份文件上传到新服务器的用户目录下解压,然后重新安装即可。MySQL用户还需要做的就是手动导出MySQL数据,并在新服务器上导入。


方法一

第一步,访问后台登录页面,如果你没有自定义后台地址,那么登陆页面为 /admin

第二步,按住键盘的 shift+alt+h 即可调出 找回密码 的按钮。

第三步,输入用户名以及用户邮箱,点击 获取 按钮获取重置密码的验证码。

第四步,收到验证码之后,输入验证码到验证码的输入框。

第五步,填写新密码以及确认密码,点击 重置密码 即可。

Q&A:

Q:用户名或者邮箱怎么错误了?

A:这你都忘了的话,请看下面的 方法二

Q:提示说没有配置发信怎么办?

A:那是因为你没有在博客设置中配置 SMTP 发信,所以无法发送验证码。解决方式:登录到服务器,打开 ~/.halo/logs/spring.log,搜索Got reset password code:即可找到验证码。


方法二

此方法需要手动修改数据库,因此十分不建议使用此方法修改密码。在非特殊情况下,请不要随意修改数据库内容。

H2 Database

如果你使用的是默认的数据库 h2 database

那么请保证 ~/.halo/application.yaml 有如下配置:(如有修改,需要重启 Halo)

spring:
  h2:
    console:
      settings:
        web-allow-others: true
      path: /h2-console
      enabled: true

假设你的博客地址为 http://your_blog.me/, 那么请直接你可以直接通过 http://your_blog.me/h2-console 访问到 h2 数据库。

h2 登录示例:

JDBC urljdbc:h2:file:~/.halo/db/halo
username: admin
password: 123456

进去之后查询 users 表:

SELECT * FROM USERS;

最后修改 password 字段的值为: $2a$10$XWHHcjqR8Cx5DnisoRA7fehC1Pi0Kc9QRQOTlhoDdRwXYZzn0Xhfa

以上 Bcrypt 密文对应的明文是 openhalo


MySQL数据库

SELECT * FROM USERS;

最后修改 password 字段的值为: $2a$10$XWHHcjqR8Cx5DnisoRA7fehC1Pi0Kc9QRQOTlhoDdRwXYZzn0Xhfa

以上 Bcrypt 密文对应的明文是 openhalo


登录

使用 openhalo 这个密码登录到后台,在个人资料中重新设置密码即可。


写在后面

docker镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务。

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

Docker中国区官方镜像:https://registry.docker-cn.com

科大镜像:https://docker.mirrors.ustc.edu.cn

网易:https://hub-mirror.c.163.com

七牛云加速器:https://reg-mirror.qiniu.com

阿里云:https://.mirror.aliyuncs.com你的ID>

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了


$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

$ docker info

注意

使用 方法一 重置密码时,当在博客设置里没有配置SMTP发信,就会提示说没有配置发信,需要登录到服务器并且打开 ~/.halo/logs/spring.log,搜索 Got reset password code: 来找到验证码,Halo用户文档里给出的搜索命令是Get reset password code:,但是本人亲测应该是Got reset password code:,我在日志里找到的是Got reset password code:这一句,这个已经提交了应该很快就能改过来。

如果说不管出于什么原因定位不到这个地方的话也挺好找的,将日志翻到当天的日期,因为在重置密码时点击获取验证码后会提示没有配置发信,所以日志里输出这句话的前面就是我们需要的验证码。


如果你觉得本文对你有帮助,不妨请我喝杯咖啡