Docker mysql:5.7容器中mysqldump输出到文件报PROCESS权限错是什么原因
问题根因
该报错是MySQL 5.7版本mysqldump工具的默认适配逻辑导致的,和磁盘写入权限、数据库基础访问权限无关:
- 当mysqldump输出到交互式终端(TTY)时,工具会默认跳过表空间导出步骤,因为表空间原始数据无法直接在终端展示,因此不会触发PROCESS权限校验,你直接运行命令打印备份内容可以正常执行。
- 当mysqldump输出到文件、管道等非TTY场景时,工具会默认尝试导出全量数据,包含表空间信息,而导出表空间要求账号持有PROCESS权限,你创建的普通用户
user默认没有分配该权限,因此触发报错。
验证方法
执行以下两个命令可以确认上述逻辑:
- 终端输出时主动添加表空间导出参数,会触发相同报错:
mysqldump -u user -ppassword database --tablespaces
- 重定向到文件时主动跳过表空间导出,命令可以正常执行:
mysqldump -u user -ppassword database --no-tablespaces > /share/dump.sql
解决方案
二选一即可:
- 常规备份场景不需要导出表空间,执行导出命令时固定添加
--no-tablespaces参数即可 - 确需导出表空间的场景,用root账号登录MySQL执行以下SQL给普通用户授权:
GRANT PROCESS ON *.* TO 'user'@'%'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者Digital Ninja
相关产品推荐
相关产品推荐

