Mysql授予所有数据库的权限,除了少数

时间:2010-10-11 19:00:55

标签: mysql

我有一个开发MySQL服务器,其上有许多数据库,而且大多数数据库都在不断变化......

我需要授予特定用户所有数据库的完全访问权限,并且只能读取其中2个数据库的访问权限(这些数据库是从另一个服务器复制的)。

我不想在每个数据库上显式授予完全权限,因为列表会不断变化,维护起来会很痛苦。

我尝试授予所有权限,然后仅授予对数据库的使用权,但授予所有内容优先权。

有没有一个很好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:0)

您可以运行一个SQL语句,例如下面的SQL语句将生成用于执行授权的SQL语句,然后运行它们。在此示例中,db1和db2是要从用户中排除的数据库,some_user是您正在为其执行授权的用户。

SELECT concat(concat('grant all on ',SCHEMA_NAME), ' to some_user') AS `Database`
  FROM INFORMATION_SCHEMA.SCHEMATA
where schema_name not in ('db1','db2')

我不知道如何在不授予每个数据库权限的情况下执行此操作,但至少通过这种方式,您可以自动生成必要的命令。