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

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

Mary-Kate Olsen
发布: 2024-11-03 19:50:03
原创
915 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板