【问题标题】:Rights needed to Flush and Lock tables in RDS Mysql DB在 RDS Mysql DB 中刷新和锁定表所需的权限
【发布时间】:2013-10-24 16:05:05
【问题描述】:

我想刷新然后锁定 RDS 实例上所有 Mysql 数据库中的所有表。

按照 Mysql 文档,最简单的方法是运行:

FLUSH LOCAL TABLES WITH READ LOCK

参见。 :http://dev.mysql.com/doc/refman/5.6/en/flush.html

但是当我使用主用户(使用 RDS 实例创建向导创建)运行此查询时,我收到此错误:

Mysql::Error: Access denied for user 'my_db_user'@'%' (using password: YES)

my_db_user 在 % 上拥有 LOCK TABLES 和 RELOAD 权限(以及其他权限)。

Mysql 引擎是 5.6.13。

我在这里缺少什么?

【问题讨论】:

    标签: mysql sql amazon-web-services rds


    【解决方案1】:

    你不能在 RDS 上这样做。

    FLUSH [LOCAL] TABLES WITH READ LOCK; 不受支持。我的假设是,它可能会干扰他们的“rdsadmin”用户(在进程列表中可见)为监视或管理您的实例所做的任何事情。

    如果您正在尝试使用 mysqldump,那么--single-transaction 是最好的选择:

    https://forums.aws.amazon.com/thread.jspa?threadID=57642#

    否则,如果您尝试阻止写入,我知道的唯一选择是手动锁定所有表或使用可以枚举表并获取锁定的自动化脚本。

    【讨论】:

      【解决方案2】:

      如果其他人来到这里尝试使用 AWS RDS Mysql 作为外部副本的源:

      获取dump + binlog位置的方法是:

      1. 创建 RDS 只读副本
      2. 断开复制
      3. 从 RDS 副本转储并使用从副本中获取的主 binlog 位置
      4. 将转储从 RDS 只读副本导入到外部副本
      5. 将主 RDS 实例设置为外部副本中的源。

      更详细地描述了here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-23
        • 2018-05-28
        • 2016-02-28
        • 1970-01-01
        • 2012-07-06
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多