0. 概述

今天突然想对接一下 grafana,但是发现悲剧了,太久没用忘记密码了,而且更坑的是我还把 admin 帐号删除了,所以格外曲折。

1. 简单的修复方法

如果我没有把 admin 账户删除,那么恢复 admin 账户的密码是一件很简单的事情,例如我是用 docker 运行的,所以需要进入到 docker contianer 内部,如果你是直接跑在机器上,那么可以省略这一步,接着就是一条命令的事情了:

[[email protected]]# grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" "password"

就这一条命令,可以将 admin 的账户密码重置为 “password”,但是我作了,之前将 admin 的账户删除了,所以我需要做更多的工作。

2. 曲折的修复方法

在经过一番查找之后,我找到了直接修改 DB 的方法,于是经过一番曲折的操作,我成功了,操作步骤为

  1. 将 docker 中的 db 拷出来(因为内部没有 sqlite3 工具)
  2. 通过 sqlite3 打开 db 文件,并且重置密码
  3. 将 db 放回容器,并且注意修改用户,很重要!!!
  4. 重启容器
[[email protected]]# docker cp grafana:/var/lib/grafana/grafana.db grafana.db 
[[email protected]]# sqlite3 grafana.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'liuliqiang';
[[email protected]]# docker cp grafana.db grafana:/var/lib/grafana/grafana.db 
[[email protected]]# docker exec --user root -it grafana /bin/sh
/usr/share/grafana # chown -R grafana:grafana /var/lib/grafana/grafana.db
[[email protected]]# docker restart grafana

这样就可以通过密码 ‘admin’ 登录 grafana 了。完成,收工!

3. Ref