在 RDS Mysql DB 中刷新和锁定表所需的权限

Pap*_*cel 2 mysql sql rds amazon-web-services

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

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

FLUSH LOCAL TABLES WITH READ LOCK
Run Code Online (Sandbox Code Playgroud)

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

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

Mysql::Error: Access denied for user 'my_db_user'@'%' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

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

Mysql 引擎是 5.6.13。

我在这里缺少什么?

Mic*_*bot 6

您无法在 RDS 上执行此操作。

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

如果您尝试使用 mysqldump,那么--single-transaction可以这样做:

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

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