用户寻求允许用户完全访问除特定表之外的数据库的解决方案,在该表中他们应该仅具有 SELECT 权限。
尽管尝试授予数据库的所有权限然后专门授予所需表的 SELECT 权限,或者撤销插入、更新和删除权限,错误仍然存在。
动态授予语句生成:
为了简化流程,您可以使用以下 SELECT CONCAT 查询来生成必要的 GRANT 语句:
<code class="sql">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";</code>
步骤:
撤销用户对数据库的所有权限:
<code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost; </code>
示例:
REVOKE ALL PRIVILEGES ON my_db.* FROM my_user@localhost; SELECT CONCAT("GRANT UPDATE ON my_db.", table_name, " TO my_user@localhost;") FROM information_schema.TABLES WHERE table_schema = "my_db" AND table_name <> "special_table";
以上是如何授予MySQL数据库除单个表之外的所有权限?的详细内容。更多信息请关注PHP中文网其他相关文章!