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;
KINGBASE研究院