gpt4 book ai didi

MySQL授予数据库除一张表之外的所有权限

转载 作者:行者123 更新时间:2023-11-30 01:32:20 25 4
gpt4 key购买 nike

我一直无法找到合理的解决方案来实现以下目标:

我希望用户对一个数据库(或一系列具有相同架构的数据库)拥有所有权限,除了一个表,他们只对这个表拥有 SELECT 权限。

本质上,我希望用户可以自由控制数据库,但不能更新特定的表。

到目前为止我已经尝试过,但没有成功:

  • 授予该数据库 (db_name.*) 的所有权限,然后专门授予对该所需表的选择权限(希望它会覆盖“全部”,我知道这很愚蠢)。

  • 授予该数据库 (db_name.*) 的所有权限,然后撤销插入、更新和删除。但这会产生一个错误,指出 db_name.table_name 没有授予规则。

根据我收集到的信息,我必须单独授予数据库每个表的所有权限(只读表除外)。

请有人告诉我有更简单的方法

注意:我运行的是 MySQL 5.1。 Ubuntu 10.04 上提供了最新版本。

最佳答案

我知道这是一篇旧帖子,但我想我应该添加到@tdammers 问题中以供其他人查看。您还可以对 information_schema.tables 执行 SELECT CONCAT 来创建授予命令,而不必编写单独的脚本。

首先撤销该数据库的所有权限:

REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;  

然后创建您的 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 客户端并全部运行。

关于MySQL授予数据库除一张表之外的所有权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com