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
-f
选项
,它可以防止脚本在错误上流产,因此您可能需要尝试以下操作:
mysql -u myuser -f < script.sql
当然,这也将忽略您可能不想被忽略的其他错误... 不幸的是,这与
-e
选件不合适。 但是,如果您从bash脚本运行mysql,则可以通过使用
heredoc可以轻松地绕过::
mysql -u myuser -f <<EOF
REVOKE ALL PRIVILEGES ...
EOF
未来搜索引擎用户在此问题上登陆:如果不存在赠款,请避免错误: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