撤销数据库范围管理员的特定表权限
作为 MySQL 管理员,您有时可能需要授予用户对某个表的完全权限。数据库,同时限制对特定表的访问。这个看似简单的任务通过传统方法实现起来却非常具有挑战性。
授予除 Select 之外的所有权限
一种常见的方法是授予数据库的所有权限(例如, db_name.*) 后跟对排除表的选择权限的特定授予。但是,此方法无效,因为后续授予不会覆盖最初的无限制访问权限。
选择性权限方法
首选解决方案包括授予表权限 -按表计算,不包括您希望限制的表。虽然这种方法对于具有大量表的数据库来说可能很乏味,但它可以确保精度并防止无意访问受保护的表。
使用信息架构
为了方便起见,您可以利用 information_schema 数据库生成必要的授予语句。以下查询将返回特定数据库中所有表的授予命令列表,不包括您要保护的表:
SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;") FROM information_schema.TABLES WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";
结论
授予所有除特定表之外的数据库权限可以通过手动逐表授予权限或使用 information_schema 数据库为所有表(不包括要保护的表)生成授予语句来实现。后一种方法为这种常见的 MySQL 管理任务提供了高效可靠的解决方案。
以上是如何撤销 MySQL 数据库范围管理员的表权限?的详细内容。更多信息请关注PHP中文网其他相关文章!