Grafana 重置 admin 密码

Grafana 的使用越来越广泛,在使用过程中经常遇到要重置密码的需求,尤其是 admin 密码,先说常规问题。

已知 admin 密码修改新密码

方法一:常规方法

使用已知密码登陆系统,在系统页面里进行修改。

方法二:API 接口

接口使用方法如下:

1
2
3
4
5
curl -X PUT -H "Content-Type: application/json" -d '{
"oldPassword": "admin",
"newPassword": "newpass",
"confirmNew": "newpass"
}' http://admin:admin@<your_grafana_host>:3000/api/user/password

忘记 admin 密码重置密码

接下来就是划重点的时候了,经常搭建了一个小环境以后,隔了几周想再看看的时候发现,admin 密码忘记了,没法登陆了。接下来这几个方法都能解决这几个问题,看情况使用。

方法一:命令行

该方法基于 Grafana 4.1 以上

1
grafana-cli admin reset-admin-password <new password>

如果上述方法报错:Could not find config defaults, make sure homepath command line parameter is set or working directory is homepath

那么使用如下 flag 来指定参数

1
grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" newpass

方法二:修改数据库

查看Grafana配置文件,确定Grafana 数据库 grafana.db的路径

配置文件路径一般为 /etc/grafana/grafana.ini ,如果安装时修改过,请查看对应位置的 grafana.ini 。

1
2
3
4
5
6
[paths]
;data = /var/lib/grafana

[database]
# For "sqlite3" only, path relative to data_path setting
;path = grafana.db

通过配置文件得知grafana.db的完整路径为: /var/lib/grafana/grafana.db

由于 Grafana 使用 sqlite3 来存储配置数据,所以使用 sqlite3 来进行修改,如果没有请安装。

1
2
3
4
5
6
7
8
9
10
11
12
[root@local]# sqlite3 /var/lib/grafana/grafana.db
#查看数据库中包含的表
.tables

#查看user表内容
select * from user;

#重置admin用户的密码为默认admin
update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';

#退出sqlite3
.exit

使用上述方法,会将 admin 用户的密码重置为 admin ,然后登陆页面进行修改。

方法三

一般来说上述方法已经可以满足需求了,如果不方便重置 admin 用户的密码,那么也可以通过修改数据库,将某个用户提权为 admin 权限用户,然后通过这个用户来进行修改。

提权语句如下:

1
udpate user set is_admin = 1 where login = 'xxxx';

参考链接

======================
Erdong, A Linux user !

Er Dong wechat
扫描二维码关注微信公众号
坚持原创技术分享,您的支持将鼓励我继续创作!