0. 概述

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

1. 简单的修复方法

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

  1. [root@liqiang.io]# grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" "password"
  2. or 新版本
  3. [root@liqiang.io]# grafana-cli admin reset-admin-password "password"

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

问题处理

  1. 遇到 Grafana-server Init Failed 错误
  1. [root@liqiang.io]# grafana-cli admin reset-admin-password
  2. Grafana-server Init Failed: Could not find config defaults, make sure homepath command line parameter is set or working directory is homepath

解决办法:

在出错提示中已经很明确地给出答案了,是 homepath 不正确导致的,所以我们可以切换到 homepath 或者加参数 homepath

  1. [root@liqiang.io]# cd /usr/share/grafana
  2. [root@liqiang.io]# grafana-cli admin reset-admin-password "password"

2. 曲折的修复方法

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

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

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

3. Ref