1

我希望我的用户对所有数据库都具有扩展权限,但一个数据库除外,在该数据库中,用户应该只拥有 select 语句权限。

我试图限制选择仅使用特定于数据库的选项,但它没有效果,用户仍然可以更新数据库。我怀疑扩展权限会覆盖我的数据库特定选项。

我不想为所有数据库管理特定于数据库的权限,因为我有四个用户和 100 多个数据库。

4

2 回答 2

1

您不能排除某些数据库,AFAIK,但您可以GRANT 通配符。因此,如果您以不同的方式命名单个数据库异常,例如其余的是否包含该单个异常没有的前缀,您可以使用通配符完成类似的操作。

例如,如果所有数据库都以'shared_'或'common_'或其他东西为前缀,您可以为“common_%”授予所有权限,然后独立控制一个没有前缀的数据库的权限。

这仍然涉及,因为您可能必须重命名大量数据库,但是您只有两个授权需要管理,而不是每个数据库一个。

于 2013-07-15T17:30:03.163 回答
0

我认为没有办法以“除一个之外的所有”形式授予 MySQL 用户权限。但是,您可以使用 MySQL 查询来生成 GRANT 查询列表,如下所示:

SELECT CONCAT('GRANT ALL ON ',SCHEMA_NAME,' TO user_name') FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME!='exclude_database'

然后为每个用户执行这些。

于 2013-07-09T20:31:04.673 回答