我使用表前缀方法让多个客户端使用同一数据库.每个客户端创建的表数将为~55.我可以做如下操作,而不是通过手动列出表格来完成所有授予吗?
GRANT SELECT,INSERT,UPDATE,DELETE ON database.prefix_* TO 'username'@'localhost' IDENTIFIED BY 'password';
我使用表前缀方法让多个客户端使用同一数据库.每个客户端创建的表数将为~55.我可以做如下操作,而不是通过手动列出表格来完成所有授予吗?
GRANT SELECT,INSERT,UPDATE,DELETE ON database.prefix_* TO 'username'@'localhost' IDENTIFIED BY 'password';
预告:这不是我的答案.我在http://lists.mysql.com/mysql/202610岁的时候发现了它,为了简单起见,我复制并粘贴了它,归功于斯蒂芬·库克
您可以使用INFORMATION_SCHEMA.TABLES视图生成GRANT 给你的结算单.按照以下行编写查询:
SELECT CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME LIKE 'foo_%'
然后运行它,复制结果,并将这些结果作为查询或 playbook .你当然可以想怎么疯狂就怎么疯狂,因为 例如,如果您为多个用户执行此操作,则可能会编写一个存储过程 它接受用户名的参数,因此可以用作 在您需要的时候使用工具.
这不是您要求的语法,但这是一个很好的技巧.
--
将表架构"test"替换为数据库的名称.foo_%可以替换为适当的前缀%
我自己试过了,效果很好.