Skip to main content
SuperTokens Core requires a database to store user data, sessions, and authentication information. This guide covers setup for all supported databases.

Supported Databases

  • PostgreSQL 11+ (Recommended for production)
  • MySQL 5.7+ / MariaDB 10.2+
  • SQLite (Development only - not for production)
  • MongoDB (via plugin)

PostgreSQL Setup

Installation

Ubuntu/Debian

Docker

Database Creation

Connection Configuration

In config.yaml:
Or via environment variable:

Connection URI Format

Examples:

PostgreSQL Optimization

For production workloads:

MySQL Setup

Installation

Ubuntu/Debian

Docker

Database Creation

Connection Configuration

In config.yaml:
Or via environment variable:

Connection URI Format

Examples:

MySQL Optimization

MongoDB Setup

MongoDB support requires a separate plugin. Contact SuperTokens for enterprise MongoDB support.

Installation

Connection Configuration

SQLite (Development Only)

SQLite is only suitable for development and testing. Do not use in production.
SQLite is automatically used when no database connection is specified:
Database location: .started directory in installation folder

Connection Pool Configuration

SuperTokens manages database connections automatically. For high-traffic scenarios:
The database driver handles connection pooling internally.

Database Migrations

Automatic Migrations

SuperTokens automatically creates and migrates database schema on startup. No manual migration is needed. Migration process:
  1. SuperTokens checks the current schema version
  2. Applies any pending migrations automatically
  3. Logs migration progress

Manual Migration Scripts

For controlled migrations in production:
Apply migrations manually:

Schema Version Tracking

SuperTokens tracks schema versions in the st_schema_version table:

High Availability Setup

PostgreSQL HA

Option 1: PostgreSQL Streaming Replication
Option 2: PgBouncer Connection Pooling
Option 3: Cloud Managed Services
  • AWS RDS PostgreSQL with Multi-AZ
  • Google Cloud SQL
  • Azure Database for PostgreSQL

MySQL HA

Option 1: MySQL Group Replication
Option 2: ProxySQL
Option 3: Cloud Managed Services
  • AWS RDS MySQL with Multi-AZ
  • Google Cloud SQL
  • Azure Database for MySQL

Backup and Recovery

PostgreSQL Backup

Full database backup:
Continuous archiving (PITR):

MySQL Backup

Full database backup:
Binary log replication:

Cloud Database Providers

AWS RDS

Google Cloud SQL

Azure Database

DigitalOcean Managed Databases

Troubleshooting

Connection Issues

Test database connectivity:
Common errors:
  • Connection refused: Check if database is running and firewall allows connections
  • Authentication failed: Verify username and password
  • Database does not exist: Create the database first
  • SSL errors: Check SSL configuration and certificates

Performance Issues

Check slow queries:
Monitor connection count:

Migration Failures

If automatic migration fails:
  1. Check SuperTokens error logs
  2. Verify database user has sufficient privileges
  3. Ensure database is accessible
  4. Apply migrations manually from migration_scripts/

Security Best Practices

Follow these security practices for production databases.
  1. Use strong passwords: Minimum 16 characters, mixed case, numbers, symbols
  2. Enable SSL/TLS: Always encrypt database connections
  3. Restrict network access: Use firewall rules to limit database access
  4. Regular backups: Automate daily backups with retention policy
  5. Principle of least privilege: Grant only necessary permissions
  6. Monitor access logs: Track database access and queries
  7. Keep databases updated: Apply security patches regularly

Next Steps