向以一组特定字符开头的mysql模式授予所有权限



我正在尝试对任何以特定字符集开头的SCHEMA授予CRUD权限。我用MySQL 8.x 做这件事

以下是我试图执行的示例查询:

GRANT SELECT,INSERT,UPDATE,DELETE ON 'tc4_%'.* TO specific_user;

我希望任何以tc4_为前缀的Schema都具有CRUD权限。这些模式还没有创建,所以在创建之前我不能显式地分配特权。

有什么办法吗?

在创建架构后,必须对每个架构中的表授予特权。而且,您不能使用LIKE样式的通配符。

此SQL将生成一个结果集,其中包含应用通配符的GRANT操作。

SELECT CONCAT(
'GRANT SELECT,INSERT,UPDATE,DELETE ON ', 
SCHEMA_NAME, 
'.* TO ''username''@''hostname'';') cmd
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'te%'
UNION ALL SELECT 'FLUSH PRIVILEGES;' cmd   /* this line is optional */

最新更新