我使用表前缀方法让多个客户端使用同一数据库.每个客户端创建的表数将为~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_%可以替换为适当的前缀%

我自己试过了,效果很好.

Database相关问答推荐

在保持抽象的同时将格式化文本存储在数据库中

生产中的超大型 Mnesia 表

什么是 CREATE VIEW IF NOT EXISTS in postgresql

发布 Oracle 和 SQL Server 性能测试是否违反许可?

递归关系的数据库设计

docker-compose mysql init sql 未执行

阿拉伯字符串上的 WHERE 子句匹配问题

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

在 SQL SERVER 中监视 SQL 查询的进度

将 Android Room 数据库与 Firebase 实时数据库相关联

是否有任何数据库支持自动索引创建?

为什么会一直出现Table is marked for deletion的消息?

C++ SQL 数据库库比较

限制来自本地主机的 MySQL 连接以提高安全性

postgreSQL 同时将列类型从 int 更改为 bigint

游戏中使用什么样的数据库?

如何在 Google AppEngine 上实现自动增量

使用带有联合和 CLOB 字段的 Select 时出现错误 ORA-00932

美国城市和州的列表/数据库

为什么 Rails 迁移在应用程序中定义外键而不在数据库中定义外键?