【问题标题】:How to do with INSERT but deny updating some column in MySQL?如何处理 INSERT 但拒绝更新 MySQL 中的某些列?
【发布时间】:2017-10-13 11:16:56
【问题描述】:

我在 Linux 下使用 MySQL 5.6。

我有一个包含 3 列(COLUMN1、COLUMN2 和 COLUMN3)的表,其中 COLUMN3 是一个包含确认信息 Y 或 N(默认为 N)的 1 字符列。

我想实现一个简单的 maker-checker 机制。

我想让 STOCKING 部门的员工拥有 INSERT 权限来添加新记录。然后,他们可以输入 COLUMN1 和 COLUMN2。他们不应更改 COLUMN3 的值。

然后,会计部门工作人员对 COLUMN3 具有 UPDATE 权限,将其从 N 更新为 Y。

但是,我发现,一旦插入新记录,STOCKING 人员就可以更新 COLUMN3.实际上,我不希望他们能够改变它。插入后仍应使用默认值 N。

在我看来,一旦插入新记录,用户就可以对新记录的每一列进行所有操作。

MySQL 中的 REVOKE 操作在这种情况下无济于事。

看起来 MySQL 中没有 DENY UPDATE 机制。

有没有人有类似的经历并分享一下如何做到这一点?

提前致谢

【问题讨论】:

  • 这个应该在前端实现。用户不应直接访问数据库。

标签: mysql


【解决方案1】:

您可能已经知道GRANT 声明。由于您还没有谈到如何将权限“授予”给您的部门,我假设您可能会提供整个数据库权限。

您可以使用 GRANT 语句分配许多权限,例如数据库权限、列权限等。您的要求表明您需要分配列权限,具体操作如下:

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';

这只会给用户 INSERT 权限而不是更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2020-02-12
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多