gpt4 book ai didi

mysql - 从 mysqldump 创建的 SQL 恢复后出现错误 1465 "Triggers can not be created on system tables"

转载 作者:可可西里 更新时间:2023-11-01 07:20:12 31 4
gpt4 key购买 nike

我在 amazon RDS 上运行 mysql 5.6 服务器,并设置了一个只读副本,用于使用 mysqldump 创建备份。

我尝试使用“--all-databases”选项,但是当我尝试导入由 mysqldump 创建的 SQL 时,我最终遇到了来自 mysql 命令客户端的错误:

ERROR 1465 "Triggers can not be created on system tables"

我使用“--all-databases”是因为我基本上想在发生崩溃时将 RDS 中的所有内容恢复到以前的状态。

也许这是错误的,我应该只选择我的模式(加上 mysql.users 表)?但是,如果“--all-databases”永远行不通,它最初的用途是什么?还是我用错了?

最佳答案

在与亚马逊支持进行了更长时间的对话后,这就是我想出的:

  1. 暂时将mysql config setting log_bin_trust_function_creators设置为1可以解决触发器问题

  2. 他们不建议拍摄完整快照,而是选择单个数据库。

  3. 这意味着您必须在恢复中执行两个步骤:

    1. 创建架构
    2. 创建用户并授予他们必要的权限
    3. 导入转储数据
  4. 对于 View ,您可能会遇到错误消息

    第 xxx 行的错误 1227 (42000):访问被拒绝;您需要(至少其中之一)此操作的 SUPER 权限

    显示它是因为 mysqldump 在创建 View 中创建了一个定义器语句(甚至您的根用户也没有足够的权限来设置它)。如所述here ,摆脱它们的唯一方法是过滤,我这样做是这样的:

    sed -i 's/^/..50013 DEFINER=.* SQL SECURITY DEFINER ..$/-- 删除安全定义语句/g'

令人尴尬,从 RDS 中获取数据库备份并重新导入需要进行大量手动工作。在任何情况下您都不应依赖备份仅由 RDS 自动创建,因为获得您的 AWS 账户访问权限的恶意攻击者可以轻松删除这些内容。

关于mysql - 从 mysqldump 创建的 SQL 恢复后出现错误 1465 "Triggers can not be created on system tables",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360693/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com