# 11.3 数据库初始化与迁移 :::tip 概述 生产数据库两条路径:**全新初始化**导入种子脚本;**存量搬迁**用 migrator 跨库迁移。两者都需在应用启动前完成,并配合连接账号最小权限。 ::: ## 全新初始化 ```bash mysql -uroot -p -e "CREATE DATABASE \`easygoadmin.gin.elevue\` DEFAULT CHARSET utf8mb4;" mysql -uroot -p easygoadmin.gin.elevue < document/mysql/easygoadmin.gin.elevue.sql ``` 25 张 `gin_` 表 + 初始化数据(菜单、字典、超管账号等)。其他方言用 `document/` 对应目录脚本。 ## 存量搬迁(migrator) ```bash make migrator ARGS="-src-type=mysql -src-database=db1 -dst-type=pgsql -dst-database=db2 ..." ``` 流水线:内省 → 目标方言 DDL → 建表 → 分批搬运 → 序列修复。要点: - 迁移期间**停写**(防搬运窗口数据变动) - 大库关注分批内存与锁时间 - 迁移后核对行数与自增/序列 - 目标库统一 utf8mb4 ## 应用连接账号 生产不用 root 跑应用: ```sql CREATE USER 'easygoadmin'@'%' IDENTIFIED BY '<强密码>'; GRANT SELECT,INSERT,UPDATE,DELETE ON easygoadmin.\`gin_*\` TO 'easygoadmin'@'%'; ``` 最小权限原则:应用只需 DML(钩子做软删,无 DDL 需求)。 ## 变更管理 - 结构变更走 SQL 脚本 + 评审,不在线上手改 - 种子脚本仅用于初始化,升级变更用增量脚本 - 变更前备份([11.9 备份与恢复](/zh/deploy/backup.html)) ## 相关 - [7.6 数据库迁移工具](/zh/tools/db-migrate.html) - [4.10 数据库设计](/zh/architecture/database-design.html)