mysql:撤销权限“如果存在”?

时间:2017-05-09 10:13:04

标签: mysql

在脚本中,我想确保一个mysql用户在特定数据库上根本没有任何权限。所以我这样做:

revoke all privileges on `testdb`.* from 'testuser'@'%'

但是如果用户对此数据库没有任何权限,我会收到此错误:

There is no such grant defined for user 'testuser' on host '%'

什么是绝对正确的,但我的脚本现在抛出错误并停止。我不想让我的脚本忽略此声明中的所有错误。

有类似

的东西
revoke all privileges if exist ...

我在mysql手册中找不到任何相关内容。

1 个答案:

答案 0 :(得分:1)

mysql命令有-f option,可防止脚本因错误而中止,因此您可能需要尝试此操作:

mysql -u myuser -f < script.sql

当然,这也会忽略您可能不想忽略的其他错误......

此外,遗憾的是,这与-e option无法合作。但是,如果你从bash脚本运行mysql,那么使用heredoc可以很容易地避免这种情况:

mysql -u myuser -f <<EOF
REVOKE ALL PRIVILEGES ...
EOF