30 lines
1.3 KiB
SQL
30 lines
1.3 KiB
SQL
-- init.sql
|
||
-- 首次部署时先执行这个脚本建库/建账号,再跑 python init_db.py
|
||
--
|
||
-- mysql -u root -p < init.sql
|
||
--
|
||
-- 为什么单独一个文件:
|
||
-- SQLAlchemy 的 create_all() 只会建表,不会建 database。
|
||
-- 很多人第一次跑报「Unknown database 'student_management_system'」,
|
||
-- 就是因为漏了这一步。
|
||
--
|
||
-- 字符集必须是 utf8mb4:
|
||
-- utf8(3 字节)存不下 emoji,也存不下部分生僻字。
|
||
-- 学生姓名、籍贯里出现这类字符时,用 utf8 会直接报
|
||
-- 「Incorrect string value」而整条插入失败。
|
||
|
||
CREATE DATABASE IF NOT EXISTS `student_management_system`
|
||
DEFAULT CHARACTER SET utf8mb4
|
||
DEFAULT COLLATE utf8mb4_0900_ai_ci;
|
||
|
||
-- 可选:给应用单独建一个低权限账号,不要用 root 连业务库。
|
||
-- 生产环境尤其重要 —— root 权限过大,一旦应用被注入损失无法控制。
|
||
-- CREATE USER IF NOT EXISTS 'sms_app'@'%' IDENTIFIED BY '换成你自己的密码';
|
||
-- GRANT SELECT, INSERT, UPDATE, DELETE ON `student_management_system`.* TO 'sms_app'@'%';
|
||
-- FLUSH PRIVILEGES;
|
||
|
||
-- 建完库之后:
|
||
-- 1. 把 .env.example 复制成 .env,填上 DB_USER / DB_PASSWORD
|
||
-- 2. python init_db.py --seed 建表 + 灌演示数据
|
||
-- 3. python main.py 启动服务(默认 http://127.0.0.1:8004)
|