使用 Ebean 與 MySQL 建立初始資料庫與管理者帳號的完整流程指南

| Work Notes | 8 Reads

前置作業與總覽

是的:先在 MySQL 建一個空的 tsk_db 資料庫(用 UTF-8),再啟用 Ebean 自動建表,啟動一次應用讓它把表結構建出來。


步驟總覽

先建 DB → 配好 application.conf → 臨時開啟 Ebean 建表 → 啟動一次 → 關閉自動建表 → 插入初始管理者資料


Step 1:建立資料庫(UTF-8)

連上 MySQL 後執行:

CREATE DATABASE tsk_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

建議建立專用帳號並授權(可用 root 也行):

CREATE USER 'tsk_user'@'localhost' IDENTIFIED BY '你的密碼';
GRANT ALL PRIVILEGES ON tsk_db.* TO 'tsk_user'@'localhost';
FLUSH PRIVILEGES;

如果你是 MySQL 8 並用舊版連線器(本專案用 5.1.25),必要時用舊式驗證:

ALTER USER 'tsk_user'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';

Step 2:設定應用連線

調整 application/tsk/conf/application.conf

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/tsk_db?characterEncoding=UTF8"
db.default.user=你的帳號
db.default.password=你的密碼

提醒:

保持 characterEncoding=UTF8(專案原本就這樣寫);若遇到 MySQL 8 時區錯誤,再加 &serverTimezone=Asia/TokyoUTC


Step 3:啟用 Ebean 自動建表(一次性)

application/tsk/conf/application.conf 追加兩行:

ebean.ddl.generate=true
ebean.ddl.run=true

掃描包已配置好:application/tsk/conf/application.conf:65ebean.default="models.*",不用改。


Step 4:啟動讓它建表

Windows:

cd application\tsk
..\..\play.bat run(或 start)

啟動後 Ebean 會依 app/models 下的 @Entity 自動建立表(如 system_users, authorities, documents 等)。


Step 5:關閉自動建表

表建好後,把剛加的兩行移除或改為 false,避免每次啟動動到 schema。


Step 6:插入初始管理者資料(很重要)

自動建表不會放資料,你需要一筆可登入的管理者:

至少要有 authorities 一筆(admin_authority=1),以及 system_users 一筆對應該權限。
system_users.password 需存放用同一個 application.secret 做的 AES 密文。

取得密文的簡便方式(二選一):

  • 在專案中臨時加一個小工具端點,用 PasswordUtil.encrypt("你的密碼") 生成字串,取得後刪掉端點。

  • 或我幫你加一個一次性「初始化種子」端點,首次啟動自動建一個 admin 帳號,完成後再移除。

有了密文後,手動 INSERT 入庫即可完成最小可登入配置。


備註

專案未提供 DDL/seed(僅有查詢用 YAML:application/tsk/conf/sql/*.sql.yml),所以需用上面流程自建表+補資料。

若看到欄位如 sort 在程式中被使用,但實體類沒有對應欄位,需在 DB 手動補上欄位以符合查詢排序需求(例如多處 orderBy("sort"))。

This article was last edited at