sql >> Database >  >> RDS >> Mysql

hoe MySQL-rechten alleen aan een specifieke rij toe te kennen

Nee, geen enkele rij maar een weergave die een enkele rij bevat die op zijn beurt de werkelijke echte tabel zal bijwerken.

Dit kan via een specifieke tabelweergave per student (ja, het wordt een rommelige DB-structuur). Verleen alleen toegang tot de weergave voor deze gebruiker, alleen selecteren/updates en de primaire sleutel kan niet worden bijgewerkt. De hoofdtabel zal zichzelf bijwerken wanneer de weergave wordt bijgewerkt.

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. Row_to_json() gebruiken met geneste joins

  2. MySql - Hoe krijg je waarde in de vorige rij en waarde in de volgende rij?

  3. Schrijf een MySQL-query om het vereiste resultaat te krijgen

  4. Codeigniter Active Record HAVING / WHERE db.field =db.field