sql >> Databasteknik >  >> RDS >> Mysql

hur man beviljar MySQL-privilegier endast till en specifik rad

Nej, inte en enda rad men en vy som innehåller en enda rad som i sin tur kommer att uppdatera den faktiska riktiga tabellen.

Detta kan göras via specifik tabellvy per elev (ja det blir en rörig DB-struktur). Bevilja endast åtkomst till vyn för den här användaren vid val/uppdateringar och primärnyckeln kommer inte att kunna uppdateras. Huvudtabellen kommer att uppdatera sig själv när vyn uppdateras.

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', '[email protected]');


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 [email protected] IDENTIFIED BY 'user_password';

UPDATE example.student_1 SET email='[email protected]'; // note no primary key needed or allowed



  1. SQLite Group By

  2. docker.io - Docker-länkar mellan applikations- och databasbehållare

  3. php-fel när du använder lagrad procedur

  4. Fråga med många CASE-satser - optimering