kingbase数据库如何创建只读用户
场景:test1库下有多个模式(cms、bmn、englo),想要创建普通用户,使得用户只能读对应模式下的表。对其他模式的表无法访问。(示例默认创建与模式名同名的用户名)
1、创建模式以及用户
--新建模式
test1=# create schema cms;
CREATE SCHEMA
test1=# create schema bmn;
CREATE SCHEMA
test1=# create schema englo;
CREATE SCHEMA
test1=#
test1=#
--新建用户
test1=# create user cms with password '123456';
CREATE ROLE
test1=# create user bmn with password '123456';
CREATE ROLE
test1=# create user englo with password '123456';
CREATE ROLE
2、授予该用户对指定模式下的表的select权限
--grant select on all tables in schema 模式名 to 用户名;
test1=# grant select on all tables in schema cms to cms;
GRANT
test1=# grant select on all tables in schema bmn to bmn;
GRANT
test1=# grant select on all tables in schema englo to englo;
GRANT
3、执行该命令授予模式权限
---grant USAGE on SCHEMA 模式名 to 用户名 ;
test1=# grant USAGE on SCHEMA cms to cms ;
GRANT
test1=# grant USAGE on SCHEMA bmn to bmn ;
GRANT
test1=# grant USAGE on SCHEMA englo to englo ;
GRANT
4、执行该命令可以对之后创建的新表也有查询权限,不配置则只能查看已有的表
-- alter default privileges in schema 模式名 grant select on tables to 用户名;
test1=# alter default privileges in schema cms grant select on tables to cms;
ALTER DEFAULT PRIVILEGES
test1=# alter default privileges in schema bmn grant select on tables to bmn;
ALTER DEFAULT PRIVILEGES
test1=# alter default privileges in schema englo grant select on tables to englo;
ALTER DEFAULT PRIVILEGES
5、测试
在三个模式中分别建表并插入数据,分别使用不同而用户访问表数据
test1=# create table cms.cmst1(id int,name varchar(100));
CREATE TABLE
test1=#
test1=# create table bmn.bmnt1(id int,name varchar(100));
CREATE TABLE
test1=# create table englo.englot1(id int,name varchar(100));
CREATE TABLE
test1=#
test1=# insert into cms.cmst1 values(1,'石家庄'),(2,'秦皇岛'),(3,'北京'),(4,'青岛');
INSERT 0 4
test1=#
test1=# insert into bmn.bmnt1 values(1,'成都'),(2,'重庆'),(3,'济南'),(4,'西安');
INSERT 0 4
test1=# insert into englo.englot1 values(1,'长沙'),(2,'武汉'),(3,'新疆'),(4,'苏州');
INSERT 0 4
5.1 使用cms用户:
--cms用户访问查询:
test1=# \c test1 cms
用户 cms 的口令:
您现在以用户名"cms"连接到数据库"test1"。
test1=>
test1=>
test1=> select * from cms.cmst1 ;
ID | NAME
----+--------
1 | 石家庄
2 | 秦皇岛
3 | 北京
4 | 青岛
(4 行记录)
test1=>
test1=> select * from bmn.bmnt1 ;
ERROR: permission denied for schema bmn
第1行select * from bmn.bmnt1 ;
^
test1=> select * from englo.englot1 ;
ERROR: permission denied for schema englo
第1行select * from englo.englot1 ;
test1=>
test1=>
test1=>
test1=>
5.2 使用bmn用户:
---bmn用户访问查询
test1=>
test1=> \c test1 bmn
用户 bmn 的口令:
您现在以用户名"bmn"连接到数据库"test1"。
test1=>
test1=>
test1=>
test1=> select * from bmn.bmnt1 ;
ID | NAME
----+------
1 | 成都
2 | 重庆
3 | 济南
4 | 西安
(4 行记录)
test1=> select * from cms.cmst1 ;
ERROR: permission denied for schema cms
第1行select * from cms.cmst1 ;
^
test1=> select * from englo.englot1 ;
ERROR: permission denied for schema englo
第1行select * from englo.englot1 ;
^
test1=>
5.3 使用englo用户:
---englo用户访问查询
test1=>
test1=> \c test1 englo
用户 englo 的口令:
您现在以用户名"englo"连接到数据库"test1"。
test1=>
test1=>
test1=>
test1=> select * from englo.englot1 ;
ID | NAME
----+------
1 | 长沙
2 | 武汉
3 | 新疆
4 | 苏州
(4 行记录)
test1=>
test1=> select * from cms.cmst1 ;
ERROR: permission denied for schema cms
第1行select * from cms.cmst1 ;
^
test1=> select * from bmn.bmnt1 ;
ERROR: permission denied for schema bmn
第1行select * from bmn.bmnt1 ;
^
test1=>
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)