忘记 Grafana 管理员密码时,优先使用官方 CLI,不要直接修改数据库哈希。执行前确认实例、配置文件、homepath 和数据库位置,避免误改另一个 SQLite 数据库。
## 本机安装
```bash
sudo grafana cli --homepath /usr/share/grafana \
admin reset-admin-password 'NEW_STRONG_PASSWORD'
```
部分版本仍提供 grafana-cli 兼容命令。若使用自定义配置:
```bash
sudo grafana cli \
--homepath /usr/share/grafana \
--config /etc/grafana/grafana.ini \
admin reset-admin-password 'NEW_STRONG_PASSWORD'
```
密码不要直接出现在共享终端、录屏和工单中;执行后清理相关 shell history,并从密码管理器生成和保存。
## 容器与 Kubernetes
在运行 Grafana 的容器中执行 CLI,并确保使用实际挂载的配置和数据目录。使用外部 MySQL/PostgreSQL 时尤其要传入正确配置,否则 CLI 可能连接默认 SQLite,看似成功却没有修改真实账号。
Kubernetes 可通过 kubectl exec 临时执行,但命令参数可能进入审计或终端记录。更安全的做法是短期读取 Secret、执行后立即轮换并删除临时资源。
## 用户 ID 与外部认证
默认管理员 ID 常为 1,但不应盲目假设。CLI 找不到管理员时会列出可用管理员 ID,可使用 --user-id 指定。
如果实例使用 LDAP、OAuth、SAML 或 Auth Proxy,登录密码可能由外部身份系统管理,此时应在身份提供方重置,而不是修改 Grafana 本地密码。
## 重置后检查
1. 使用新密码登录并强制退出旧会话。
2. 检查 Server Admin、组织角色与异常管理员。
3. 启用 SSO/MFA、最小权限和审计。
4. 确认默认 admin 账号是否仍需要长期启用。
5. 轮换可能暴露的数据源密码和 API Key。
6. 查看 Grafana 日志中的异常登录与配置错误。
生产 Grafana 不应直接暴露公网;使用 TLS、反向代理、访问控制和受支持版本。CLI 的 --insecure 会关闭 TLS 校验,不应为解决插件下载问题在生产中使用。
参考:https://grafana.com/docs/grafana/latest/administration/cli/