您好,
抱歉让您久等了。我们通过 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 这个数据库有权限,备份将无法完整。