您好,
抱歉讓您卡住了。我們從 trace 跟資料庫對過,根本原因找到了:備份功能會去讀您 MySQL 服務的 MYSQL_USERNAME 環境變數,但您這個服務目前只有 MYSQL_USER(沒有 MYSQL_USERNAME),所以備份程式抓不到使用者名稱才會丟出 MISSING_DATABASE_USERNAME。
對照一下,Zeabur MySQL 模板預設會給的環境變數應該長這樣:
MYSQL_USERNAME = root
PASSWORD = <自動產生>
MYSQL_PASSWORD = ${MYSQL_ROOT_PASSWORD}
MYSQL_ROOT_PASSWORD = ${PASSWORD}
MYSQL_DATABASE = zeabur
MYSQL_HOST = ${CONTAINER_HOSTNAME}
MYSQL_PORT = ${DATABASE_PORT}
您現在這個服務的 MYSQL_USERNAME 不見了,變成 MYSQL_USER = mysql,看起來是之前手動改過。
最簡單的修復方式: 到該 MySQL 服務的 Variables 頁面,新增一個變數:
MYSQL_USERNAME = root
(不用刪掉現有的 MYSQL_USER,如果您應用程式有引用它的話,保留即可。)
加上之後重試「建立備份」就會成功。備份是用 root 身份做 mysqldump,所以這裡填 root 是正確的;若改填 mysql,該使用者只對 zeabur 這個 database 有權限,備份不會完整。