日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過視圖管控?cái)?shù)據(jù)權(quán)限

更新時(shí)間:

本文介紹如何通過視圖實(shí)現(xiàn)給不同的賬號(hào)授予查詢同一表中不同數(shù)據(jù)的權(quán)限,來提供數(shù)據(jù)的安全性。

場景需求

已創(chuàng)建了一張包含不同省份客戶的表customer,建表語句如下:

CREATE TABLE `customer` (
 `id` BIGINT AUTO_INCREMENT,
 `province_id` BIGINT NOT NULL,
 `user_info` VARCHAR,
 PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(`id`);

往表customer中插入測試數(shù)據(jù),語句如下:

INSERT INTO customer(province_id,user_info) VALUES (1,'Tom'),(1,'Jerry'),(2,'Jerry'),(3,'Mark');

通過SELECT語句可查詢到表中當(dāng)前數(shù)據(jù)如下:

+---------------------+-------------+-----------+
| id                  | province_id | user_info |
+---------------------+-------------+-----------+
| 1369417242420617216 |           1 | Tom       |
| 1369417242424811520 |           1 | Jerry     |
| 1369417242424811522 |           3 | Mark      |
| 1369417242424811521 |           2 | Jerry     |
+---------------------+-------------+-----------+

要求user1僅能查看省份1(即province_id=1)的數(shù)據(jù),而user2僅能查看省份2(即province_id=2)的數(shù)據(jù)。

實(shí)現(xiàn)方式

您可以通過如下操作步驟實(shí)現(xiàn)上述場景需求:

  1. 為省份1和省份2分別創(chuàng)建一個(gè)視圖v1v2,語句如下:

    • 查詢省份1數(shù)據(jù)的視圖創(chuàng)建語句。

      CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT * FROM customer WHERE province_id=1;
    • 查詢省份2數(shù)據(jù)的視圖創(chuàng)建語句。

      CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT * FROM customer WHERE province_id=2;
    說明

    創(chuàng)建視圖語句中各參數(shù)的詳細(xì)介紹,請(qǐng)參見CREATE VIEW

  2. 視圖創(chuàng)建成功后,通過GRANT語句將對(duì)應(yīng)的數(shù)據(jù)查詢權(quán)限授予給目標(biāo)用戶,語句如下:

    說明

    創(chuàng)建賬號(hào)的方法,請(qǐng)參見CREATE USER

    • 授予user1通過v1視圖查詢省份1數(shù)據(jù)的權(quán)限:

      GRANT SELECT ON v1 TO user1;
    • 授予user2通過v2視圖查詢省份2數(shù)據(jù)的權(quán)限:

      GRANT SELECT ON v2 TO user2;

查詢結(jié)果驗(yàn)證

  • 使用user1賬號(hào)連接AnalyticDB for MySQL集群的adb_demo數(shù)據(jù)庫后,user1僅能查詢到視圖v1數(shù)據(jù),查詢語句如下:

    SELECT * FROM v1;

    查詢結(jié)果如下:

    +---------------------+-------------+-----------+
    | ID                  | PROVINCE_ID | USER_INFO |
    +---------------------+-------------+-----------+
    | 1369417242420617216 |           1 | Tom       |
    | 1369417242424811520 |           1 | Jerry     |
    +---------------------+-------------+-----------+

    user1想要查詢視圖v2中的數(shù)據(jù),則會(huì)出現(xiàn)如下錯(cuò)誤:

    ERROR 1815 (HY000): [9001, 2021083114191719216818804803453965343] : Access Denied
  • 使用user2賬號(hào)連接AnalyticDB for MySQL集群的adb_demo數(shù)據(jù)庫后,user2僅能查詢到視圖v2數(shù)據(jù),查詢語句如下:

    SELECT * FROM v2;

    查詢結(jié)果如下:

    +---------------------+-------------+-----------+
    | ID                  | PROVINCE_ID | USER_INFO |
    +---------------------+-------------+-----------+
    | 1369417242424811521 |           2 | Jerry     |
    +---------------------+-------------+-----------+

    user2想要查詢視圖v1中的數(shù)據(jù),也會(huì)出現(xiàn)如下錯(cuò)誤:

    ERROR 1815 (HY000): [9001, 2021083114191719216818804803453965343] : Access Denied