mariadb 如何仅将MySQL权限授予特定行

jvlzgdj9  于 2022-11-08  发布在  Mysql
关注(0)|答案(1)|浏览(152)

假设有一张学生桌

学生(标识、姓名、城市)

我想创建一个用户A,并只授予更新id=10的记录的权限。
CREATE USER A ;
GRANT UPDATE ON student TO A WHERE student.id=10;
我试过这个,它不起作用。

1szpjjfi

1szpjjfi1#

否,不是单行而是包含单行的视图,该视图将依次更新实际的真实表。

这可以通过每个学生的特定表视图来完成(是的,这将是一个混乱的数据库结构)。仅允许此用户访问该视图,仅允许选择/更新,主键将是不可更新的。主表将在视图更新时自动更新。

CREATE SCHEMA `example` ;

CREATE TABLE `example`.`student` (
      `id` INT NOT NULL,
      `name` VARCHAR(45) NULL,
      `email` VARCHAR(45) NULL,
      PRIMARY KEY (`id`));

INSERT INTO `example`.`student` (`id`, `name`, `email`) VALUES ('1', 'bob', 'bob@bob.com');

USE `example`;
CREATE 
     OR REPLACE SQL SECURITY DEFINER
VIEW `student_1` AS
    SELECT 
        `student`.`id` AS `id`,
        `student`.`name` AS `name`,
        `student`.`email` AS `email`
    FROM
        `student`
    WHERE
        (`student`.`id` = '1');

CREATE USER 'student_1_user'@'localhost' IDENTIFIED BY 'user_password';

    GRANT SELECT,UPDATE ON example.student_1 TO student_1_user@localhost IDENTIFIED BY 'user_password';

UPDATE example.student_1 SET email='newemail@bob.com'; // note no primary key needed or allowed

相关问题