问题 执行'SELECT INTO OUTFILE'时,对于错误访问被拒绝,mysqldump的适当权限是什么?


备份用户具有BackupAdmin角色和所有权限(对象权限,DDL,GRANT)。

cmd> mysqldump --routines=TRUE --tab=C:\tmp -h localhost -u backup -pbackup schemalocal
cmd> mysqldump: Got error: 1045: Access denied for user 'backup'@'%' (using password: YES) when executing 'SELECT INTO OUTFILE'

使其工作的唯一方法是为备份帐户提供DBA角色,但这是一个安全风险,所以我只想给它提供必要的权利。 他们是哪一个?


8940
2018-03-08 10:56


起源

您确定,密码是否正确?对于SELECT INTO OUTFILE,只需要一个privelege:SELECT_PRIV - Martin Rothenberger
密码是正确的,因为我尝试使用完全相同的代码,但在给它DBA角色后,它工作正常。 - Joe
我发现Workbench不允许备份GRANT FILE权限。这是为用户执行此命令的命令? dev.mysql.com/doc/refman/5.0/es/grant.html - Joe


答案:


你需要的 FILE 特权以便被允许使用 SELECT...INTO OUTFILE,这似乎是什么 mysqldump --tab 用于生成制表符分隔的转储。

这个特权是 全球,这意味着它只能被授予“ON *.*“:

GRANT FILE ON *.* TO 'backup'@'%';

15
2018-02-21 23:44



并且需要这些权限的原因是文件是在。上创建的 服务器 如果您正在对远程数据库服务器运行该命令。小心通过填满磁盘空间来杀死主机。 - Alex Ciminian
这对我来说不起作用,也没有更改AppArmor也没有以root身份运行。只创建/ tmp / mysql-dump /然后chown -R 777 / tmp / mysql-dump /并将mysqldump运行到该文件夹​​中。 - eb80