MySQL:撤销权限 "if exists"?

10

在脚本中,我想确保一个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
您可能想运行一个 SHOW GRANTS 语句,然后只撤销该查询的结果。 - Florian Humblot
1
你是否考虑过只针对该条件使用 14.6.7.2 DECLARE ... HANDLER 语法 - wchiquito
如果它破坏了你的复制,那么这尤其令人痛苦。 - Bob S
1个回答

1

mysql命令有一个-f选项,可以防止脚本在出现错误时中止,因此您可能想尝试这个选项:

mysql -u myuser -f < script.sql

当然,这也会忽略其他可能不想被忽略的错误...
另外,这不幸地不能与-e选项结合使用。但是,如果您无论如何都要从bash脚本运行mysql,则可以轻松地通过使用heredoc来规避此问题:
mysql -u myuser -f <<EOF
REVOKE ALL PRIVILEGES ...
EOF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接