一、问题
grafana里忘记密码该怎么处理
二、解决方法
1.直接改数据库
find / -name "grafana.db"
# 进入到指定的目录
# 登陆数据库
sqlite3 grafana.db
# 查看表名
.tables
# 更改密码
update user set password = '7e8b589037feaaff7a7eac549656f3090bd1e30272816798fe74818c0cd8732c89fb8eaaa956ff6bb5f04e1afd7aae6c9fb9' where login = 'admin';
2.基于命令修改
# 1.修改密码为admin123
grafana-cli admin reset-admin-password admin123
# 2.重启服务
systemctl restart grafana-server
三、特殊情况
1.现象
# 有时步骤一的更改并不能生效,可以改成如下更改
update user set password = '7e8b589037feaaff7a7eac549656f3090bd1e30272816798fe74818c0cd8732c89fb8eaaa956ff6bb5f04e1afd7aae6c9fb9', salt = 'YZ2PEee4in' where login = 'admin';
2.解释
2.1 grafana加密方式
https://github.com/grafana/grafana/blob/3a7fc80948e630c0f88edccba54d66acacf6d724/pkg/login/grafana_login.go
https://github.com/grafana/grafana/blob/23956557d8c6a119b7de5be5c42024e29634d002/pkg/util/encoding.go
// EncodePassword encodes a password using PBKDF2.
func EncodePassword(password string, salt string) (string, error) {
newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New)
return hex.EncodeToString(newPasswd), nil
}
2.2 salt定义
salt的定义可以从下面这篇文章看出
https://blog.youkuaiyun.com/softuse/article/details/76619613
我的理解,salt的意思就是在原有密码的某些位置加入了一段字符串,然后对这个结果进行加密操作,这样别人即使反向解密了也不会拿到你真实的密码
所以当salt不同的时候,你即使password的数值是对的,加密后的最终结果也是不对的,这个就是为什么要改salt的原因
本文介绍了在Grafana中忘记密码的解决方法,包括通过直接修改数据库和使用命令行工具 grafana-cli 重置密码。详细步骤包括找到 grafana.db 文件,使用 sqlite3 更新用户密码和 salt。还解释了 Grafana 的密码加密方式,使用 PBKDF2 算法,并涉及到 salt 在密码安全性中的作用。特殊情况说明了当直接修改密码无效时,可能需要更新 salt 的情况。
381

被折叠的 条评论
为什么被折叠?



