Poste.io 忘记管理员密码解决方案

工具 · 07-31

Poste.io 安装后,管理员密码忘记了,这时可以通过操作SQLite数据库来直接修改密码。

定位数据库

1. 进入 Poste.io 容器

找出所有正在运行的 Docker 容器:

docker ps
docker ps

image-20240731165638647

找到 Poste.io 容器的容器 ID 或名称,进入该容器:

docker exec -it <container_id_or_name> /bin/bash

<container_id_or_name>替换为实际的容器 ID 或名称

2. 进入 Poste.io 数据库

进入容器后,需要进入 Poste.io 的 SQLite 数据库。数据库文件通常位于 /data 目录下。使用以下命令导航到数据库文件所在目录:

cd /data

数据库文件名通常是 users.db。使用 sqlite3 工具打开数据库:

sqlite3 users.db

如果这里显示找不到数据库,那需要手动去寻找正确的数据库文件,使用 find 命令在容器中查找 .db 文件:

find / -name "*.db"

这个命令会列出所有包含 .db 扩展名的文件。

image-20240731165647647

2. 确定数据表

找到可能的数据库文件后,确认其路径,然后重新打开该数据库文件。例如,假设找到了一个名为 users.db 的文件:

sqlite /data/users.db

打开正确的数据库文件后,使用 .tables 命令查看所有表:

.tables

image-20240731165912355

查看表结构来确定是不是需要的数据表,假设表名为 users,查看其结构:

PRAGMA table_info(users);

image-20240731170137235

修改密码

查找管理员记录:

SELECT * FROM users WHERE username='admin';

image-20240731170240729

Poste.io 使用的是 SHA512 哈希来存储密码,可以使用 OpenSSL 工具来生成一个符合 Poste.io 要求的 SHA512 密码哈希,然后将其直接更新到数据库中,使用 OpenSSL 生成一个 SHA512 哈希密码

openssl passwd -6

输入你需要的新密码,复制生成的哈希值。例如:

$6$YGaHnvc0gItKuld3$FIsOvhQSGNKykQQ...

image-20240731170447493

返回 SQLite 会话,使用生成的哈希值更新密码

UPDATE users SET password='{SHA512-CRYPT}$6$YGaHnvc0gItKuld3$FIsOvhQSGNKykQQ...' WHERE username='admin';

验证更改

SELECT * FROM users WHERE username='admin';

退出:

.quit

这时候就可以用新的密码登录管理员账户了,如果不行可以重启服务再登录。

Theme Jasmine by Kent Liao