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