MySQL 迁移作业不会迁移用户账号和登录信息。包含由用户使用 DEFINER 子句定义的元数据的来源在新的 Cloud SQL 副本上调用时会失败,因为这些用户尚不存在。
如需确定元数据中存在哪些 DEFINER 值,请查询 MySQL 源数据库。检查结果中是否存在 root%localhost 条目或目标实例中不存在的用户条目:
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA NOT
IN ('mysql', 'sys');
如需从包含此类元数据的来源运行迁移作业,请执行以下操作之一:
在开始迁移作业之前,请在目标 Cloud SQL 副本实例上创建用户。
如需创建迁移作业草稿而不启动,请选择创建,而不是创建并启动。
在 Cloud SQL 目标实例上,使用 Cloud SQL API 或 Google Cloud 控制台重新创建源 MySQL 实例中的用户。
从迁移作业列表或特定作业的页面中,启动迁移作业。
在设置迁移作业之前,请将源 MySQL 实例上的
DEFINER子句更新为INVOKER。