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.Use the built-in CLI command to reset admin password:
- 2.```bash
- 3.# For package installations
- 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.If you see error "there are multiple admin users", specify the username:
- 2.```bash
- 3.grafana-cli admin reset-admin-password --user admin <new-password>
- 4.
`
Method 2: Environment Variable
- 1.For containerized deployments, set admin password via environment variable:
- 2.```yaml
- 3.# docker-compose.yml
- 4.environment:
- 5.- GF_SECURITY_ADMIN_PASSWORD=newpassword123
# Kubernetes ConfigMap or Secret env: - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: grafana-admin key: password ```
- 1.Restart the container after changing environment variables:
- 2.```bash
- 3.docker-compose down && docker-compose up -d
- 4.
`
Method 3: Database Direct Update
- 1.For SQLite database (default installation), update the user table directly:
- 2.```bash
- 3.# Stop Grafana first
- 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.For PostgreSQL backend:
- 2.```sql
- 3.-- Connect to grafana database
- 4.psql -U grafana -d grafana
-- Reset password UPDATE "user" SET password = '$2a$10$YourBcryptHashHere', salt = '' WHERE login = 'admin'; ```
- 1.For MySQL/MariaDB backend:
- 2.```sql
- 3.mysql -u grafana -p grafana
UPDATE user SET password = '$2a$10$YourBcryptHashHere', salt = '' WHERE login = 'admin'; ```
Method 4: Create New Admin User
- 1.If the admin user was deleted, create a new one via CLI:
- 2.```bash
- 3.grafana-cli admin data-migration hash-passwords
- 4.grafana-cli admin reset-admin-password <new-password>
- 5.
`
Verification
- 1.Log in with the new admin credentials:
- 2.- Username:
admin - 3.- Password: your new password
- 4.Verify admin privileges in the UI:
- 5.- Navigate to Configuration > Users
- 6.- Confirm the admin user has the Admin role
- 7.- Check Server Admin settings are accessible
- 8.Configure SMTP for future password resets:
- 9.```ini
- 10.# In grafana.ini
- 11.[smtp]
- 12.enabled = true
- 13.host = smtp.example.com:587
- 14.user = noreply@example.com
- 15.password = smtp-password
- 16.from_address = grafana@example.com
- 17.
`