向除 MySQL 中特定表之外的数据库授予权限
许多数据库通常需要向不同用户授予不同级别的权限。一些用户可能需要对数据库的完全控制,而其他用户可能只需要对特定表的有限权限。在 MySQL 中,为用户分配全面的权限可以很简单;然而,分配除特定表之外的所有权限可能具有挑战性。
初始不成功的尝试
正如用户查询中提到的,尝试使用“db_name”授予所有权限.*”,然后有选择地授予所需表的 SELECT 权限不会覆盖“所有”权限。此外,授予所有权限后撤销插入、更新和删除权限会导致错误,因为缺少特定表的授予规则。
个人权限授予
对数据库中除只读表之外的每张表单独授予所有权限虽然看起来很繁琐,但它是目前最直接、最可靠的方法。这种方法可以确保用户对特定表没有更新权限。
更简单的方法?
用户表示希望有更简单的解决方案,并且确实有一个结合了授予所有权限和排除特定表的便利性的技术:
撤销所有权限:
REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;
使用Information_schema创建GRANT语句:
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";
这种方法提供了一种更快、更动态的替代方案,以手动分别向每个表授予权限。
以上是如何授予MySQL数据库中除特定表之外的所有权限?的详细内容。更多信息请关注PHP中文网其他相关文章!