cja*_*ell 30 linux amazon-rds mariadb
我有一个使用 mysqldump 从 AWS RDS MariaDB 导出数据的流程,该流程已在 Concourse 上的 docker-image 中成功运行多年。
从两天前开始,该过程开始失败并出现以下错误:
mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'admin'@'%' (using password: YES) (1045)
Run Code Online (Sandbox Code Playgroud)
AWS的官方解释似乎是,因为它们不允许主用户或全局读锁的超级权限,所以如果设置了 --master-data 选项,mysqldump 就会失败。
我没有设置该选项。我正在使用这些标志运行:
mysqldump -h ${SOURCE_DB_HOST} ${SOURCE_CREDENTIALS} ${SOURCE_DB_NAME} --single-transaction --compress | grep -v '^SET .*;$' > /tmp/dump.sql
Run Code Online (Sandbox Code Playgroud)
从我的本地 Mac 执行时 mysqldump 工作正常。它失败并出现错误,无法仅从 Linux 环境执行 FLUSH TABLES WITH READ LOCK。
我的问题是,有谁知道如何在 Linux 上的 mysqldump 中禁用 FLUSH TABLES WITH READ LOCK 命令?
编辑:很高兴接受下面的 @sergey-payu 答案,因为它已经解决了我的问题,但这里有一个 MySQL 错误报告的链接,以供遇到此问题的其他人使用https://bugs.mysql.com/bug.php? id=109685
Ser*_*ayu 23
几天前我遇到了同样的问题。我的 mysqldump 脚本多年来一直工作得很好,直到它开始给我错误Access denied; you need (at least one of) the RELOAD privilege(s) for this operation。我的第一反应是授予这个特权。但之后我开始遇到Access denied for user 'user'@'%' (using password: YES) (1045)错误,该错误记录在 AWS 文档中。经过几个小时的调查,结果发现这是最新 5.7.41 版本 mysql 的一个错误(它于 1 月 17 日发布,正是我们开始出现错误的时间)。降级到 5.7.40 解决了该问题。有趣的是,5.7.41 变更日志没有列出任何接近 FLUSH TABLES WITH READ LOCK 或默认值的内容。
小智 23
除了授予我的用户 PROCESS 权限外,我发现该--set-gtid-purged=OFF选项对我有用。
mysqldump --single-transaction --set-gtid-purged=OFF -h {host} {schema}
从 Ubuntu 22.04 升级到 AWS RDS MySQL 8.0.33
小智 13
我发现安装 MariaDB 客户端可以解决这个问题。
在 Ubuntu 中,运行:
sudo apt remove mysql-client -y && sudo apt install mariadb-client -y
Run Code Online (Sandbox Code Playgroud)