授予具有特定前缀的多个表的权限

Cha*_*had 16 mysql database grant database-permissions

我使用表前缀方法让几个客户端使用相同的数据库.每个客户端创建的表数量约为55.而不是通过手动列出表格来完成所有授权,我可以执行以下操作吗?

GRANT SELECT,INSERT,UPDATE,DELETE ON database.prefix_* TO 'username'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

Cog*_*Sum 32

预先注意:这不是我的答案.我在http://lists.mysql.com/mysql/202610找到了它,并为了简单信用而复制并粘贴给Stephen Cook

您可以使用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_%'
Run Code Online (Sandbox Code Playgroud)

然后运行它,复制结果,并将这些结果作为查询或脚本运行.你当然可以随心所欲地疯狂,例如,如果你为许多用户这样做,可能会编写一个带有用户名参数的存储过程,因此可以在需要时用作工具.

它不是你要求的语法,但它是一个很好的技巧.

-

将表模式'test'替换为数据库的名称.foo_%可以替换为appropraite prefix_%

我自己试了这个,效果很好.

  • OP没有礼貌接受这个答案,但它帮助我+1 (4认同)