KingbaseES 授予schema下对象权限以及schema空间限额

授予schema下对象权限

创建一个名为schematest的schema:

CREATE SCHEMA schematest;

创建一个新的用户,名为test02用户:

创建一个新的用户,名为test02用户:

如果不对test02用户授予任何权限,切换到test02用户执行craete table命令会提示权限不足
下面授予名为 test02 的用户对 schematest的所有权限:此命令将授予该用户在 schematest 中创建、修改和删除表、视图等其他对象的权限。

GRANT ALL ON SCHEMA schematest TO test02;

使用 \c 命令连接到数据库,并尝试在该用户的 schema 中创建一个新表:

\c test test02
test=> create table schematest.t5(id int);
CREATE TABLE

这将在 test02 用户的 schematest中创建一个名为 t5 的新表。
经验证该用户只能在自己的 schema 中访问它:

test=> SELECT * FROM schematest.t5;
 id
----
(0 rows)

如果尝试在其他 schema 中查询该表,会收到提示没有该表。
这是因为我们并没有在 public 模式下创建该表:

test=> SELECT * FROM t5;
错误:  关系 "t5" 不存在
LINE 1: SELECT * FROM t5;                   

test=> SELECT * FROM public.t5;
错误:  关系 "public.t5" 不存在
LINE 1: SELECT * FROM public.t5;

对于public模式下存在的表,该用户也没有权限访问:

test=> select * from public.t1;
错误:  对表 t1 权限不够

如果希望授予该用户在public schema 中有访问权限,请使用以下命令:

GRANT USAGE ON SCHEMA public TO test02;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO test02;

此时用户 test02 对 public schema 中对象有查询权限。

schema空间配额

我们没办法直接对scehma限制空间使用,可以通过表空间配额插件,把schema下的表放进限额表空间,间接控制scehma的空间配额。

表空间限额插件参考文档:https://www.cnblogs.com/kingbase/p/17461137.html

查询schema容量:

SELECT 
  nspname AS schema_name, 
  sys_size_pretty(sum(sys_total_relation_size(sys_class.oid))) AS total_size
FROM 
  sys_class 
  JOIN sys_namespace ON sys_namespace.oid = sys_class.relnamespace
WHERE 
  nspname NOT LIKE 'pg_%' AND nspname != 'information_schema'
GROUP BY 
  nspname;
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值