sql >> データベース >  >> RDS >> Mysql

特定の行にのみMySQL権限を付与する方法

    1行ではありません ただし、単一の行を含むビューは、実際の実際のテーブルを更新します。

    これは、学生ごとに特定のテーブルビューを介して実行できます(はい、それは厄介なDB構造になります)。このユーザーにビューへのアクセスを許可するのは、選択/更新のみであり、主キーは更新できません。ビューが更新されると、メインテーブルが自動的に更新されます。

    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. MySQLが指定されたIDの行を選択しない

    2. SnowflakeDBとIRIWorkbenchを接続する

    3. DBMS_JOBを使用してOracleでジョブを作成する

    4. 1つの値について複数の列をチェックする