Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak nadać uprawnienia MySQL tylko do określonego wiersza

Brak ani jednego wiersza ale widok zawierający pojedynczy wiersz, który z kolei zaktualizuje rzeczywistą tabelę.

Można to zrobić za pomocą określonego widoku tabeli na ucznia (tak, będzie to niechlujna struktura bazy danych). Przyznaj dostęp do widoku tylko temu użytkownikowi, zezwól tylko na wybór/aktualizację, a klucza podstawowego nie będzie można aktualizować. Główna tabela zaktualizuje się, gdy widok zostanie zaktualizowany.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie przygotowanych oświadczeń PDO i parametrów wiążących

  2. Obliczanie różnicy dat MySQL i PHP w dniach

  3. Czy podzapytanie może zwrócić dwie wartości?

  4. Czy istnieje bardziej wydajny sposób tworzenia stronicowania w Hibernate niż wykonywanie zapytań wybierających i zliczających?

  5. Błąd w kolumnie sygnatury czasowej mysql