我希望我的用户在所有数据库上拥有扩展权限,但只有一个数据库,用户只能选择正确的语句。
我试图限制只选择使用特定于数据库的选项,但它没有任何效果,用户仍然可以更新数据库。我怀疑扩展权限覆盖了我特定于数据库的选项。
我不想为所有数据库管理特定于数据库的权限,因为我有四个用户和100多个数据库。
答案 0 :(得分:1)
您不能排除某些数据库,AFAIK,但可以通配符上的GRANT。因此,如果您以不同的方式命名单个数据库异常,请说如果其余数据库异常包含前缀,则可以使用通配符完成类似的操作。
例如,如果所有数据库都以“shared_”或“common_”为前缀,则可以授予“common_%”的所有权限,但是可以单独控制一个数据库的权限,而不需要前缀。
这仍然涉及,因为您可能需要重命名大量数据库,但之后您只需要管理两个授权,而不是每个数据库一个。
答案 1 :(得分:0)
我认为没有办法以'除了一个'之外的形式授予MySQL用户权限。 但是,您可以使用MySQL查询生成GRANT查询列表,如下所示:
SELECT CONCAT('GRANT ALL ON ',SCHEMA_NAME,' TO user_name') FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME!='exclude_database'
然后为每个用户执行这些操作。