AnalyticDB for PostgreSQL 6.0新特性解析-授权操作增强

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 授权语法对比 ADB PG4.3和6.0 GRANT语法上对比: 新增功能 改动点有: 支持同一SCEMA下对象授权 ALL [TABLES|SEQUENCES|FUNCTIONS] IN SCHEMA schema_name; 4.

授权语法对比

ADB PG4.3和6.0 GRANT语法上对比:
1572575914120_11507baa_bb1b_4457_8aa8_a33fa02e767f

新增功能

改动点有:

支持同一SCEMA下对象授权

ALL [TABLES|SEQUENCES|FUNCTIONS] IN SCHEMA schema_name;

4.3不支持,6.0操作示例:

# 6.0
yuanzhe_test=> \dt s1.*
          List of relations
 Schema | Name | Type  |    Owner
--------+------+-------+--------------
 s1     | t1   | table | yuanzhe_test
 s1     | t2   | table | yuanzhe_test
(2 rows)

yuanzhe_test=> grant select on all tables in schema s1 to u1;
GRANT

支持列级别授权

GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ]( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO { role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]  

4.3不支持,6.0 操作示例:

yuanzhe_test=> \d s1.t1
        Table "s1.t1"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer |
 name   | text    |

yuanzhe_test=> grant select (name) on s1.t1 to u1;
GRANT
yuanzhe_test=> \c yuanzhe_test u1
Password for user u1:
You are now connected to database "yuanzhe_test" as user "u1".
yuanzhe_test=> select name from s1.t1;
 name
------
(0 rows)

yuanzhe_test=> select id from s1.t1;
ERROR:  permission denied for relation t1

支持对自定义DOMAIN授权

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

4.3也支持DOMAIN,但是不支持授权,6.0支持授权,示例:

# 4.3
yuanzhe_test=> CREATE DOMAIN us_zip_code AS TEXT CHECK
yuanzhe_test->        ( VALUE ~ '^\\d{5}$' OR VALUE ~ '^\\d{5}-\\d{4}$' );
CREATE DOMAIN
yuanzhe_test=> grant USAGE on DOMAIN us_zip_code to u1;
ERROR:  syntax error at or near "us_zip_code"
LINE 1: grant USAGE on DOMAIN us_zip_code to u1;
                              ^
# 6.0
yuanzhe_test=> CREATE DOMAIN us_zip_code AS TEXT CHECK
yuanzhe_test->        ( VALUE ~ '^\\d{5}$' OR VALUE ~ '^\\d{5}-\\d{4}$' );
CREATE DOMAIN
yuanzhe_test=> grant USAGE on DOMAIN us_zip_code to u1;
GRANT

支持对FDW权限管理

6.0支持FDW,对FDW相关的权限管理,目前只有superuser才支持创建FDW,未开放

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

支持对TYPE进行授权

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

4.3 支持创建TYPE,但不支持授权,6.0支持授权。示例:

# 4.3
yuanzhe_test=> CREATE TYPE compfoo AS (f1 int, f2 text);
CREATE TYPE
yuanzhe_test=> grant USAGE on TYPE compfoo to u1;
ERROR:  syntax error at or near "compfoo"
LINE 1: grant USAGE on TYPE compfoo to u1;
                            ^
                            
# 6.0
yuanzhe_test=> CREATE TYPE compfoo AS (f1 int, f2 text);
CREATE TYPE
yuanzhe_test=> grant USAGE on TYPE compfoo to u1;
GRANT
yuanzhe_test=> \c yuanzhe_test u1
Password for user u1:
You are now connected to database "yuanzhe_test" as user "u1".
yuanzhe_test=> create table t3(id int, dum compfoo);
NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.
HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE
yuanzhe_test=> \d+ t3
                          Table "public.t3"
 Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
 id     | integer |           | plain    |              |
 dum    | compfoo |           | extended |              |
相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
17天前
|
PHP 开发者
PHP 7新特性深度解析与实践应用
【9月更文挑战第17天】本文将深入探讨PHP 7的新特性及其对开发者的实际影响,同时通过实例演示如何有效利用这些特性优化代码和提高性能。我们将从类型声明的增强开始,逐步深入到其他关键改进点,最后通过一个综合案例展示如何将这些新特性应用于日常开发中。
|
1月前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术特性与用户体验的深度解析
在移动操作系统的战场上,安卓和iOS一直占据着主导地位。本文将深入探讨这两大平台的核心技术特性,以及它们如何影响用户的体验。我们将从系统架构、应用生态、安全性能和创新功能四个方面进行比较,帮助读者更好地理解这两个系统的异同。
52 3
|
2月前
|
机器学习/深度学习 API PHP
PHP 7新特性深度解析与应用实践深入浅出:用深度学习识别手写数字
【8月更文挑战第27天】随着PHP 7的发布,这个广受欢迎的Web开发语言带来了许多令人兴奋的新特性。本文将深入探讨这些新特性,并展示如何在实际项目中利用它们来提升代码的性能和可维护性。无论你是PHP新手还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
|
15天前
|
PHP
PHP 7新特性解析与实践
【9月更文挑战第19天】在这篇文章中,我们将深入探讨PHP 7的新特性,以及如何在实际开发中应用这些新特性。我们将通过代码示例,详细解析PHP 7的性能提升,新的操作符,空合并操作符,标量类型声明等新特性,并分享一些实践经验和技巧。无论你是PHP新手还是老手,这篇文章都将帮助你更好地理解和掌握PHP 7的新特性。
|
16天前
|
自动驾驶 物联网 5G
深入解析5G NR(新无线电)及其主要特性
深入解析5G NR(新无线电)及其主要特性
56 2
|
21天前
|
PHP
PHP 7新特性深度解析与实践
【9月更文挑战第13天】本文将深入探讨PHP 7的新特性,包括性能提升、语法改进、错误处理等方面。我们将通过实例代码来展示这些新特性的使用方法和优势,帮助您更好地理解和应用PHP 7。
|
25天前
|
编译器 PHP 开发者
PHP 7新特性深度解析
在这篇文章中,我们将深入探讨PHP 7带来的一系列新特性,包括性能提升、语法改进等方面。通过对比分析,我们将揭示这些变化如何影响开发者的编码实践和应用程序的性能优化。
|
26天前
|
编译器 PHP 开发者
PHP 8新特性解析与应用实践
PHP 8作为PHP语言的最新版本,带来了许多令人兴奋的新特性和性能改进。本文将深入探讨PHP 8中的JIT编译器、联合类型、匹配表达式等关键更新,并通过实例演示如何在项目中有效利用这些新工具,帮助开发者提升代码质量和执行效率。
|
9天前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
2月前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。

热门文章

最新文章

下一篇
无影云桌面