首页 > 解决方案 > 使用外部源 mysql 在 google cloud sql 中设置副本时出现定义器错误

问题描述

我们正在谷歌云 sql 中设置托管在其他地方的 MySQL 的副本。

在检查复制失败的原因时,我们得到了这个:

{
  "kind": "sql#externalSyncSettingErrorList",
  "errors": [
    {
      "kind": "sql#externalSyncSettingError",
      "type": "UNSUPPORTED_DEFINER",
      "detail": "Definer user root@localhost not supported. Please update host to '%'."
    }
  ]
}

我没有将根上的主机更改为“%”...关于如何在不接触源服务器的情况下解决此问题的任何提示?

标签: mysqlgoogle-cloud-sqldatabase-replication

解决方案


以下示例演示如何在 Linux、macOS 或适用于 Linux 的 Windows 子系统 (WSL) 中删除 DEFINER:

消除

sed -i -e 's/DEFINER=`root`@`localhost`//g' dump.sql

查找和替换

sed -i -e 's/DEFINER=`root`@`localhost`/DEFINER=`masteruser`@`%`/g' dump.sql

注意:将masteruser的值替换为您的 MySql 主用户的名称。

然后在副本上恢复(谷歌云 sql)。


推荐阅读