如果忘记了 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. 启用匿名访问登录修改

  1. 修改配置文件
    编辑 /etc/grafana/grafana.ini,添加以下内容:

    ini

    [auth.anonymous]
    enabled = true
    org_role = Admin  # 赋予管理员权限(谨慎使用)
    

  2. 重启服务

    bash

    sudo systemctl restart grafana-server
    

  3. 登录修改
    访问 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 服务:


  1. 访问登录页面,点击 Forgot your password?

  2. 输入注册邮箱,接收重置链接并修改密码。

五、安全建议

  1. 备份数据库
    重置密码前,务必备份 grafana.db 或外部数据库,避免数据丢失。

  2. 匿名访问风险
    启用匿名访问后,建议立即修改配置并限制网络访问,防止未授权访问。

  3. 定期轮换密码
    使用工具(如 LastPass)管理密码,避免再次遗忘。