跳到主要内容

管理 Share

引入或更新于:v1.2.949
企业版功能
Data Sharing是企业版功能。 如需获取许可证,请联系 Databend 支持团队。

在提供方租户中执行以下操作。所需权限参见访问控制。

变更对后续查询生效。正在执行的查询会继续执行。

管理消费方账号​

语句结果
ALTER SHARE sales_share ADD ACCOUNTS = a, b添加账号。列表中已有的账号保留。
ALTER SHARE sales_share REMOVE ACCOUNTS = a移除账号。其他账号保留。
ALTER SHARE sales_share SET ACCOUNTS = a, b替换完整列表。语句中未列出的账号失去访问权限。
警告

SET ACCOUNTS 替换完整列表。添加或移除单个账号时,使用 ADD ACCOUNTS 或 REMOVE ACCOUNTS。

移除账号后,消费方无法读取共享数据库。重新添加该账号后,消费方可以再次读取共享数据库。

配置空 Share​

可以创建不带连接的 Share:

CREATE SHARE pending_share;

然后在一条语句中设置账号和连接:

ALTER SHARE pending_share SET
ACCOUNTS = consumer_acct
CONNECTION = share_conn
COMMENT = 'Ready for consumers';

ADD ACCOUNTS 和 SET ACCOUNTS 需要连接。SET 可以在同一语句中设置连接。

更换连接​

使用以下步骤更换凭证。消费方保持访问权限。

  1. 创建新连接。使用与已授权表相同的存储类型。

  2. 在 Share 上设置新连接:

    ALTER SHARE sales_share SET CONNECTION = replacement_conn;

Databend 针对所有已授权表检查新连接。如果检查失败,Share 保留原连接。

完成第 2 步前,不要删除原连接。如果 Databend 找不到连接,读取会失败。

备注

此步骤只更换消费方读取使用的凭证。外部位置表保存其连接设置的副本。更换提供方表的凭证时,使用 ALTER TABLE ... CONNECTION。

更改授权​

在 GRANT 和 REVOKE 语句中使用对象的当前名称。

停止共享单张表时,执行以下语句:

REVOKE SELECT ON TABLE orders_db.orders FROM SHARE sales_share;

其他表授权保留。再次授权同一张表即可恢复访问。

警告

撤销数据库的 USAGE 时,Databend 同时移除 Share 中的所有表授权。

REVOKE USAGE ON DATABASE orders_db FROM SHARE sales_share;

恢复访问时,先授权数据库,再授权每张表。

重命名后,撤销新名称。对旧名称或已删除对象执行 REVOKE 语句不产生任何作用。

提供方删除表后,其授权可能保留在 Share 中。DESCRIBE SHARE 可能以不完整的名称显示该授权。该授权不能访问同名的新表。

生命周期与恢复​

提供方操作对消费方的结果恢复方式
插入数据。后续查询显示新数据。不需要。
重命名表。共享数据库显示新名称。在查询中使用新名称。
重命名数据库。共享数据库继续工作,其名称不变。不需要。
撤销表的 SELECT。消费方无法读取该表。再次授权同一张表。
撤销数据库的 USAGE。消费方无法读取共享数据库。所有表授权被移除。再次授权数据库和每张表。
移除消费方账号。消费方无法读取共享数据库。再次添加该账号。
设置兼容的连接。读取使用新凭证。不需要。
删除连接。读取失败。重新创建连接,或设置其他连接。
向共享表添加行访问策略或掩码策略。Databend 拒绝该操作。不适用。
删除表后重新创建。新表是不同的对象,原授权不适用于新表。授权新表。消费方重新创建其 Stream。
删除数据库后重新创建。共享数据库停止工作。授权新数据库和表。消费方重新创建共享数据库。
删除或替换 Share。共享数据库停止工作。配置新 Share。消费方重新创建共享数据库。

重新创建共享数据库​

开始前,在提供方配置好 Share、授权和消费方账号。

注意

以下步骤会删除共享数据库,其上的 Stream 会失效。提供方数据不变。

  1. 在消费方会话中删除共享数据库:

    DROP DATABASE shared_orders;
  2. 基于当前 Share 创建共享数据库:

    CREATE DATABASE shared_orders FROM SHARE provider_acct.sales_share;
  3. 重新创建 Stream。

CREATE DATABASE IF NOT EXISTS 不能修复已存在的共享数据库。

删除 Share​

DROP SHARE sales_share;

此语句不删除提供方表或连接。消费方的共享数据库保留,但读取会失败。

同名的新 Share 是不同的 Share,不能修复共享数据库。

错误处理参见故障排查。完整语法参见 Share SQL 参考。

欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验