如果忘记了 Grafana 的用户名和密码,可以通过以下方法重置,具体步骤根据部署方式(Docker 或本地安装)有所不同:
一、Docker 环境下的密码重置
1. 使用 grafana-cli 命令(推荐)
bash
# 进入 Grafana 容器(需替换容器名/ID)
docker exec -it grafana_container_name /bin/bash
# 重置管理员密码(默认用户名为 admin)
grafana-cli admin reset-admin-password new_password
验证:
执行后提示Admin password changed successfully ✔
表示成功,登录时使用admin/new_password
即可。
shitou@aishitou:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab357e46450f grafana/grafana:latest "/run.sh" 5 months ago Up 47 minutes 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp grafana
553e54dcef0d prom/prometheus:latest "/bin/prometheus --c…" 5 months ago Up 47 minutes 0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp prometheus
eec3a45791bc google/cadvisor:latest "/usr/bin/cadvisor -…" 5 months ago Restarting (255) 11 seconds ago cadvisor
shitou@aishitou:~$ sudo docker exec -it b357e46450f /bin/bash
[sudo] password for shitou:
Error response from daemon: No such container: b357e46450f
shitou@aishitou:~$ sudo docker exec -it ab357e46450f /bin/bash
ab357e46450f:/usr/share/grafana$ grafana-cli admin reset-admin-password shitou521
Deprecation warning: The standalone 'grafana-cli' program is deprecated and will be removed in the future. Please update all uses of 'grafana-cli' to 'grafana cli'
INFO [08-11|12:11:54] Starting Grafana logger=settings version=11.5.2 commit=598e0338d5374d6bc404b02a58094132c5eeceb8 branch=HEAD compiled=2025-08-11T12:11:54Z
INFO [08-11|12:11:54] Config loaded from logger=settings file=/usr/share/grafana/conf/defaults.ini
INFO [08-11|12:11:54] Config overridden from Environment variable logger=settings var="GF_PATHS_DATA=/var/lib/grafana"
INFO [08-11|12:11:54] Config overridden from Environment variable logger=settings var="GF_PATHS_LOGS=/var/log/grafana"
INFO [08-11|12:11:54] Config overridden from Environment variable logger=settings var="GF_PATHS_PLUGINS=/var/lib/grafana/plugins"
INFO [08-11|12:11:54] Config overridden from Environment variable logger=settings var="GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
INFO [08-11|12:11:54] Target logger=settings target=[all]
INFO [08-11|12:11:54] Path Home logger=settings path=/usr/share/grafana
INFO [08-11|12:11:54] Path Data logger=settings path=/var/lib/grafana
INFO [08-11|12:11:54] Path Logs logger=settings path=/var/log/grafana
INFO [08-11|12:11:54] Path Plugins logger=settings path=/var/lib/grafana/plugins
INFO [08-11|12:11:54] Path Provisioning logger=settings path=/etc/grafana/provisioning
INFO [08-11|12:11:54] App mode production logger=settings
INFO [08-11|12:11:54] FeatureToggles logger=featuremgmt formatString=true transformationsVariableSupport=true alertingNoDataErrorExecution=true publicDashboardsScene=true addFieldFromCalculationStatFunctions=true unifiedRequestLog=true dashboardSceneForViewers=true useSessionStorageForRedirection=true kubernetesPlaylists=true onPremToCloudMigrations=true newFiltersUI=true dashboardScene=true alertingInsights=true cloudWatchNewLabelParsing=true logsExploreTableVisualisation=true panelMonitoring=true cloudWatchRoundUpEndTime=true recordedQueriesMulti=true annotationPermissionUpdate=true pinNavItems=true logsContextDatasourceUi=true promQLScope=true newPDFRendering=true azureMonitorEnableUserAuth=true newDashboardSharingComponent=true groupToNestedTableTransformation=true nestedFolders=true transformationsRedesign=true dataplaneFrontendFallback=true lokiLabelNamesQueryApi=true tlsMemcached=true lokiQuerySplitting=true lokiStructuredMetadata=true openSearchBackendFlowEnabled=true logsInfiniteScrolling=true prometheusAzureOverrideAudience=true accessActionSets=true logRowsPopoverMenu=true accessControlOnCall=true ssoSettingsApi=true alertingUIOptimizeReducer=true alertingApiServer=true alertingSimplifiedRouting=true recoveryThreshold=true exploreMetrics=true awsAsyncQueryCaching=true correlations=true dashboardSceneSolo=true influxdbBackendMigration=true userStorageAPI=true cloudWatchCrossAccountQuerying=true zipkinBackendMigration=true lokiQueryHints=true dashgpt=true preinstallAutoUpdate=true managedPluginsInstall=true angularDeprecationUI=true reportingUseRawTimeRange=true
INFO [08-11|12:11:54] Connecting to DB logger=sqlstore dbtype=sqlite3
INFO [08-11|12:11:54] Locking database logger=migrator
INFO [08-11|12:11:54] Starting DB migrations logger=migrator
INFO [08-11|12:11:55] migrations completed logger=migrator performed=0 skipped=629 duration=26.627473ms
INFO [08-11|12:11:55] Unlocking database logger=migrator
INFO [08-11|12:11:55] Envelope encryption state logger=secrets enabled=true current provider=secretKey.v1
2. 直接修改 SQLite 数据库
若 Grafana 使用内置 SQLite 数据库(默认配置):
bash
# 进入容器并连接数据库
docker exec -it grafana_container_name /bin/bash
sqlite3 /var/lib/grafana/grafana.db
# 更新密码(替换为实际用户名)
UPDATE user SET password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' WHERE login = 'admin';
说明:
上述密码对应明文admin
,执行后直接用admin/admin
登录,首次登录会强制要求修改密码。
3. 环境变量重置(首次启动时)
若容器尚未启动,可通过环境变量指定初始密码:
bash
docker run -d \
-p 3000:3000 \
-e "GF_SECURITY_ADMIN_PASSWORD=new_password" \
--name grafana \
grafana/grafana
注意:
此方法仅在首次启动容器时生效,若容器已运行需先删除后重新创建。
二、本地安装(非 Docker)的密码重置
1. 通过 grafana-cli 命令
bash
# 直接重置管理员密码
grafana-cli admin reset-admin-password new_password
# 若提示找不到命令,需指定路径(例如)
/usr/sbin/grafana-cli admin reset-admin-password new_password
2. 数据库操作(以 SQLite 为例)
bash
# 找到数据库文件(默认路径)
sudo find / -name grafana.db
# 连接数据库并修改密码
sqlite3 /var/lib/grafana/grafana.db
UPDATE user SET password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' WHERE login = 'admin';
3. 启用匿名访问登录修改
修改配置文件:
编辑/etc/grafana/grafana.ini
,添加以下内容:ini
[auth.anonymous] enabled = true org_role = Admin # 赋予管理员权限(谨慎使用)
重启服务:
bash
sudo systemctl restart grafana-server
登录修改:
访问http://localhost:3000
,无需密码即可登录,进入Configuration > Users
修改账户信息。
三、用户名和密码同时忘记的处理
1. 从数据库查询用户名
bash
# 进入 SQLite 数据库
sqlite3 /var/lib/grafana/grafana.db
# 查询所有用户
SELECT login, email FROM user;
输出示例:
plaintext
login | email admin | admin@example.com user1 | user1@example.com
2. 将其他用户提升为管理员
bash
# 将用户 user1 设为管理员
UPDATE user SET is_admin = 1 WHERE login = 'user1';
# 重置该用户密码(同前文方法)
UPDATE user SET password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' WHERE login = 'user1';
登录:
使用user1/admin
登录,然后在界面中修改管理员密码。
四、故障排查与注意事项
1. 权限问题
Docker 容器:
确保容器的grafana.db
目录已挂载到宿主机,否则修改数据库后需重启容器才会生效。本地安装:
执行命令时需使用sudo
或切换到 Grafana 用户。
2. 外部数据库(如 MySQL)
若使用 MySQL 等外部数据库,需通过 SQL 客户端连接并执行更新:
sql
UPDATE grafana.user SET password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' WHERE login = 'admin';
密码哈希生成:
可通过 Grafana 官方工具生成哈希值,避免手动输入错误。
3. 邮件重置(需提前配置)
若 Grafana 已配置 SMTP 服务:
访问登录页面,点击 Forgot your password?。
输入注册邮箱,接收重置链接并修改密码。
五、安全建议
备份数据库:
重置密码前,务必备份grafana.db
或外部数据库,避免数据丢失。匿名访问风险:
启用匿名访问后,建议立即修改配置并限制网络访问,防止未授权访问。定期轮换密码:
使用工具(如 LastPass)管理密码,避免再次遗忘。