Poste.io 安装后,管理员密码忘记了,这时可以通过操作SQLite数据库来直接修改密码。
定位数据库
1. 进入 Poste.io 容器
找出所有正在运行的 Docker 容器:
docker ps
docker ps
找到 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
扩展名的文件。
2. 确定数据表
找到可能的数据库文件后,确认其路径,然后重新打开该数据库文件。例如,假设找到了一个名为 users.db
的文件:
sqlite /data/users.db
打开正确的数据库文件后,使用 .tables
命令查看所有表:
.tables
查看表结构来确定是不是需要的数据表,假设表名为 users
,查看其结构:
PRAGMA table_info(users);
修改密码
查找管理员记录:
SELECT * FROM users WHERE username='admin';
Poste.io 使用的是 SHA512 哈希来存储密码,可以使用 OpenSSL 工具来生成一个符合 Poste.io 要求的 SHA512 密码哈希,然后将其直接更新到数据库中,使用 OpenSSL 生成一个 SHA512 哈希密码
openssl passwd -6
输入你需要的新密码,复制生成的哈希值。例如:
$6$YGaHnvc0gItKuld3$FIsOvhQSGNKykQQ...
返回 SQLite 会话,使用生成的哈希值更新密码
UPDATE users SET password='{SHA512-CRYPT}$6$YGaHnvc0gItKuld3$FIsOvhQSGNKykQQ...' WHERE username='admin';
验证更改
SELECT * FROM users WHERE username='admin';
退出:
.quit
这时候就可以用新的密码登录管理员账户了,如果不行可以重启服务再登录。