Introduction

Losing access to the Grafana admin account is a common scenario after upgrades, migrations, or personnel changes. The default admin credentials (admin/admin) are often changed during initial setup, and if that password is lost, you need recovery methods that work across different deployment types.

Symptoms

  • Cannot log in with known admin credentials after an upgrade
  • Error message: "Invalid username or password"
  • Previous administrator left without documenting credentials
  • Password reset email is not configured or not working
  • Grafana returns "Login failed" for all known admin accounts

Common Causes

  • Password was changed from default but not documented
  • SMTP is not configured, so password reset emails fail silently
  • Grafana database was migrated or restored from backup with different credentials
  • User table in database has corrupted password hash or salt values
  • Multiple admin accounts exist but all have unknown passwords

Step-by-Step Fix

Method 1: Grafana CLI Reset

  1. 1.Use the built-in CLI command to reset admin password:
  2. 2.```bash
  3. 3.# For package installations
  4. 4.grafana-cli admin reset-admin-password <new-password>

# For Docker containers docker exec -it grafana grafana-cli admin reset-admin-password <new-password>

# For Kubernetes pods kubectl exec -n monitoring deploy/grafana -- grafana-cli admin reset-admin-password <new-password> ```

  1. 1.If you see error "there are multiple admin users", specify the username:
  2. 2.```bash
  3. 3.grafana-cli admin reset-admin-password --user admin <new-password>
  4. 4.`

Method 2: Environment Variable

  1. 1.For containerized deployments, set admin password via environment variable:
  2. 2.```yaml
  3. 3.# docker-compose.yml
  4. 4.environment:
  5. 5.- GF_SECURITY_ADMIN_PASSWORD=newpassword123

# Kubernetes ConfigMap or Secret env: - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: grafana-admin key: password ```

  1. 1.Restart the container after changing environment variables:
  2. 2.```bash
  3. 3.docker-compose down && docker-compose up -d
  4. 4.`

Method 3: Database Direct Update

  1. 1.For SQLite database (default installation), update the user table directly:
  2. 2.```bash
  3. 3.# Stop Grafana first
  4. 4.systemctl stop grafana-server

# Connect to database sqlite3 /var/lib/grafana/grafana.db

# Update admin password (use bcrypt hash) UPDATE user SET password = '$2a$10$YourBcryptHashHere', salt = '' WHERE login = 'admin';

# Or reset to known default for testing UPDATE user SET password = 'admin', salt = '' WHERE login = 'admin'; ```

  1. 1.For PostgreSQL backend:
  2. 2.```sql
  3. 3.-- Connect to grafana database
  4. 4.psql -U grafana -d grafana

-- Reset password UPDATE "user" SET password = '$2a$10$YourBcryptHashHere', salt = '' WHERE login = 'admin'; ```

  1. 1.For MySQL/MariaDB backend:
  2. 2.```sql
  3. 3.mysql -u grafana -p grafana

UPDATE user SET password = '$2a$10$YourBcryptHashHere', salt = '' WHERE login = 'admin'; ```

Method 4: Create New Admin User

  1. 1.If the admin user was deleted, create a new one via CLI:
  2. 2.```bash
  3. 3.grafana-cli admin data-migration hash-passwords
  4. 4.grafana-cli admin reset-admin-password <new-password>
  5. 5.`

Verification

  1. 1.Log in with the new admin credentials:
  2. 2.- Username: admin
  3. 3.- Password: your new password
  4. 4.Verify admin privileges in the UI:
  5. 5.- Navigate to Configuration > Users
  6. 6.- Confirm the admin user has the Admin role
  7. 7.- Check Server Admin settings are accessible
  8. 8.Configure SMTP for future password resets:
  9. 9.```ini
  10. 10.# In grafana.ini
  11. 11.[smtp]
  12. 12.enabled = true
  13. 13.host = smtp.example.com:587
  14. 14.user = noreply@example.com
  15. 15.password = smtp-password
  16. 16.from_address = grafana@example.com
  17. 17.`