我正在尝试对任何以特定字符集开头的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 */