Mysql:撤销特权“如果存在”?

问题描述 投票:0回答:2
在脚本中,我想确保,MySQL用户在特定数据库上完全没有特权。所以我愿意:

revoke all privileges on `testdb`.* from 'testuser'@'%'
但是,如果用户在此数据库上没有任何特权,我会遇到此错误:

There is no such grant defined for user 'testuser' on host '%'
什么是绝对正确的,但是我的脚本现在引发了一个错误并停止。我不想让我的脚本忽略此语句中的所有错误。

so,有类似的东西吗?

revoke all privileges if exist ...

我在MySQL手册中找不到任何内容。

mysql

命令具有一个
mysql
2个回答
1
投票
-f

选项

,它可以防止脚本在错误上流产,因此您可能需要尝试以下操作:
mysql -u myuser -f < script.sql
当然,这也将忽略您可能不想被忽略的其他错误...
不幸的是,这与

-e
选件

不合适。 但是,如果您从bash脚本运行mysql,则可以通过使用

heredoc

可以轻松地绕过:


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

未来搜索引擎用户在此问题上登陆:
如果不存在赠款,请避免错误:

0
投票
REVOKE IF EXISTS ALL PRIVILEGES ON `testdb`.* FROM 'testuser'@'%';

如果不存在用户,请避免出现错误:

REVOKE IF EXISTS ALL PRIVILEGES ON `testdb`.* FROM 'testuser'@'%' IGNORE UNKNOWN USER;
请注意,这两个语言功能仅在MySQL 8.0或更高版本中可用:
https://dev.mysql.com/doc/refman/8.0/en/revoke.html

	

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.