我有一个名为dump的MySQL用户,拥有以下权限:

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'
GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%'

我想使用dump用户转储所有数据(包括触发器和过程).我用以下方式调用mysqldump:

mysqldump -u dump -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

除了triggers, they are missing外,所有被转储的文件都没有问题!!

如果我使用root个MySQL用户try mysqldump,触发器将正确转储:

mysqldump -u root -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

所以,我想这是烫发的问题...extra grants my dump MySQL user needs for doing the full dump correctly?美元是多少

推荐答案

假设"完全卸载"也指VIEWEVENT,则需要:

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...;
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `myschema`.* TO 'dump'@'%';

如果你有VIEW个执行函数,那么不幸的是,你还需要EXECUTE个.

我自己的问题是:如果我只想进行无数据转储,为什么需要SELECT

Mysql相关问答推荐

对象NotExecutabletry 在远程SQL服务器上执行SQL时出错,并使用SQLAchemy.Create_engine

SQL中的搜索模式

根据当前表列的值,从SQL中的另一个表中获取数据

如何在JOIN中获取MySQL中的项目总数

我可以在姓名和姓名日期之间进行搜索吗?

如何在 SQL 中迭代所有名称和排名排列

排序子查询结果并返回每个 ID 的第一行

MySql SELECT 查找包含数字的区间的时间复杂度是多少?

使用来自另一个表 mysql 的值将新行插入到表中

如何使用 express.js 和 react.js 删除连接表中的元素和关联元素

MySQL - 单词边界的正则表达式,不包括下划线(连接标点符号)

为什么这个 NOT NULL 到 NULL 迁移会触发大量 I/O 操作?

查询mysql中无法识别数据值

在 SQL 中将列添加为 End_date,间隔为 +100 天

进行 MySQL COUNT 查询

如何在 MySQL 中 Select 字段具有最小值的数据?

MySQL解释计划中 Select 优化的表的含义

在 MYSQL 中按枚举字段排序

MYSQL_ROOT_PASSWORD 已设置但在 docker 容器中获取用户'root'@'localhost'的访问被拒绝(使用密码:YES)

表被指定了两次,既作为更新的目标,又作为 mysql 中数据的单独源