开发者社区> 问答> 正文

MySQL向数据库授予除一个表以外的所有特权?mysql

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

我希望有一个对数据库(或具有相同架构的一系列数据库)具有ALL特权的用户,除了一个表外,该表只具有SELECT特权。

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

到目前为止,我已经尝试了,但无济于事:

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

授予该数据库(db_name。*)的所有特权,然后取消插入,更新和删除。但这产生了一个错误,表明db_name.table_name没有授予规则。

根据我的能力,我将不得不分别授予数据库每个表(只读表除外)的所有特权。

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

注意:我正在运行MySQL 5.1。最新版本可在Ubuntu 10.04上使用。

展开
收起
保持可爱mmm 2020-05-17 19:34:19 576 0
1 条回答
写回答
取消 提交回答
  • 我知道这是一篇过时的文章,但我想我应该补充@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客户端中,然后全部运行。来源:stack overflow

    2020-05-17 19:35:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云云原生一体化数仓 立即下载
基于云原生数据仓库AnalyticDB PG的最佳实践 立即下载
新氧云原生全栈数仓最佳实践 立即下载

相关镜像