数据库配置

Redirect 支持 MySQL、MariaDB、PostgreSQL 和 SQLite 四种数据库驱动,通过 DB_DRIVER 环境变量切换。

数据库选择

数据库驱动值端口当前版本适用场景
MySQLmysql33069.7.0生产环境,高并发
MariaDBmysql330612.3.2MySQL 替代品,完全兼容
PostgreSQLpostgres543218.4生产环境,功能丰富
SQLitesqlite—轻量部署,单机/测试
📖
MariaDB 使用 DB_DRIVER: mysql,与 MySQL 协议完全兼容,无需额外适配。

环境变量对照表

变量MySQL/MariaDBPostgreSQL说明
DB_DRIVERmysqlpostgres数据库驱动
DB_HOST数据库地址数据库地址主机地址
DB_PORT33065432端口
DB_USER用户名用户名数据库用户
DB_PASSWORD密码密码数据库密码
DB_NAMEredirectredirect数据库名

Docker Compose 配置示例

MySQL

services:
  mysql:
    image: mysql:9.7.0
    container_name: redirect-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      MYSQL_DATABASE: redirect
      TZ: Asia/Shanghai
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

  backend:
    environment:
      DB_DRIVER: mysql
      DB_HOST: mysql
      DB_PORT: 3306
      DB_USER: root
      DB_PASSWORD: your_password
      DB_NAME: redirect

MariaDB

services:
  mariadb:
    image: mariadb:12.3.2
    container_name: redirect-mariadb
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: your_password
      MARIADB_DATABASE: redirect
      TZ: Asia/Shanghai
    ports:
      - "3306:3306"
    volumes:
      - mariadb-data:/var/lib/mysql
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5

  backend:
    environment:
      DB_DRIVER: mysql
      DB_HOST: mariadb
      DB_PORT: 3306
      DB_USER: root
      DB_PASSWORD: your_password
      DB_NAME: redirect

PostgreSQL

services:
  postgres:
    image: postgres:18.4
    container_name: redirect-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: your_password
      POSTGRES_DB: redirect
      TZ: Asia/Shanghai
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d redirect"]
      interval: 10s
      timeout: 5s
      retries: 5

  backend:
    environment:
      DB_DRIVER: postgres
      DB_HOST: postgres
      DB_PORT: 5432
      DB_USER: postgres
      DB_PASSWORD: your_password
      DB_NAME: redirect
⚠️
PostgreSQL 容器中的 POSTGRES_USER 必须与 backend 的 DB_USER 保持一致。

使用独立数据库用户

生产环境建议创建独立用户,而非使用 root:

MySQL/MariaDB

services:
  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: root_strong_password
      MYSQL_DATABASE: redirect
      MYSQL_USER: redirect
      MYSQL_PASSWORD: your_password

  backend:
    environment:
      DB_USER: redirect
      DB_PASSWORD: your_password

PostgreSQL

services:
  postgres:
    environment:
      POSTGRES_USER: redirect
      POSTGRES_PASSWORD: your_password
      POSTGRES_DB: redirect

  backend:
    environment:
      DB_USER: redirect
      DB_PASSWORD: your_password

外部数据库配置

如果使用已有数据库(如 1Panel 自带数据库),只需配置 backend 环境变量:

DB_DRIVER: mysql
DB_HOST: your-db-host
DB_PORT: 3306
DB_USER: your-db-user
DB_PASSWORD: your-db-password
DB_NAME: redirect

SQLite 配置

适合轻量部署,数据存储在本地文件:

DB_DRIVER: sqlite
DB_NAME: data/sqlite.db
💡
了解更多部署方式请查看 部署指南。