sql >> Databáze >  >> RDS >> Mysql

jak udělit oprávnění MySQL pouze určitému řádku

Ne, ani jeden řádek ale pohled, který obsahuje jeden řádek, který naopak aktualizuje skutečnou skutečnou tabulku.

To lze provést pomocí specifického zobrazení tabulky na studenta (ano, bude to chaotická struktura DB). Udělte přístup k zobrazení tomuto uživateli pouze povolte pouze výběr/aktualizace a primární klíč nebude možné aktualizovat. Hlavní tabulka se aktualizuje sama při aktualizaci pohledu.

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. Je možné získat přístup ke staré verzi řádku v Postgres, která nebyla vysáta?

  2. Jak použít poddotaz k definování offsetu Mysql SELECT LIMIT?

  3. příkaz mysql pro zobrazení aktuálních konfiguračních proměnných

  4. Vyberte řádky pro konkrétní datum pomocí datového typu TIMESTAMP