首页 >数据库 >mysql教程 >如何授予MySQL数据库除单个表之外的所有权限?

如何授予MySQL数据库除单个表之外的所有权限?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 19:50:03904浏览

How to Grant All Privileges to a MySQL Database Except for a Single Table?

如何授予MySQL数据库除单表之外的所有权限

问题:

用户寻求允许用户完全访问除特定表之外的数据库的解决方案,在该表中他们应该仅具有 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>

步骤:

  1. 撤销用户对数据库的所有权限:

    <code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;  </code>
  2. 执行 SELECT CONCAT 查询以生成 GRANT 语句。
  3. 粘贴生成的语句进入您的 MySQL 客户端并运行它们。

示例:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn