当前位置: 首页 > news >正文

瀚高安全版数据库跨模式访问表

文章目录

  • 环境
  • 文档用途
  • 详细信息

环境

系统平台:中标麒麟(海光)7
版本:4.3.4.7

文档用途

本文主要介绍在安全版HGDB中,如何通过对用户、模式、表等数据库对象授权管理,实现表的跨模式访问,本次主要介绍以下规则:

1、数据库的默认搜索模式为$user,public,在没有创建跟用户同名的模式的情况下,默认表都创建在public下;

2、通过角色继承的方式创建的用户a跟b,a用户创建的表,将表a的属主改为b用户后,ab用户同时拥有drop该表的权限;

3、安全版数据库下用户可以将自建的模式赋予给其他用户,根据使用情况赋予create、usage等权限,不推荐使用all privilege参数;

4、如果一个b用户想访问a用户下自建模式下的表,需要a用户将模式、表的权限都赋给b用户才可以实现,单独授予任何一个的情况下,在添加了search_path参数后,可以看到表,但是无法查询表的内容。

详细信息

1、创建数据库用户a ,数据库a,属主为用户a,通过角色继承的方式创建用户b

highgo=# create user a with password 'highgo123';CREATEROLE highgo=# create database a with owner=a;CREATEDATABASEhighgo=# create user b inherit user a password'highgo123';

2、通过用户a 登录数据库a,创建测试表a,并插入数据

[root@node1~]# psql -U a -d apsql(4.3.4.7)输入"help"来获取帮助信息.a=>createtablea(idint);CREATETABLEa=>insertintoavalues(1);INSERT01

3、通过用户b登录数据库a ,可以看到public下的表a,但是没有权限访问

[root@node1 ~]# psql -U b -d a

用户 b 的口令:

注意:


Login User: b

Login time: 2020-01-08 11:22:49.58514+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:15:50+08


psql(4.3.4.7)输入"help"来获取帮助信息.a=>a=>a=>\dt+

关联列表

架构模式|名称|类型|拥有者|大小|描述----------+------+--------+--------+------------+------public|a|数据表|a|8192bytes|(1行记录)

a=> select * from a;

错误: 对关系 a 权限不够

4、登录数据库,把表a的增删改查权限赋予用户b,再次查询成功

[root@node1 ~]# psql -U a -d a

用户 a 的口令:

注意:


Login User: a

Login time: 2020-01-08 11:23:34.17439+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:14:29+08


psql (4.3.4.7)

输入 “help” 来获取帮助信息.

a=> grant select,insert,update,delete,truncate on table a to b;

GRANT

a=> \q

[root@node1 ~]# psql -U b -d a;

用户 b 的口令:

注意:


Login User: b

Login time: 2020-01-08 11:27:08.566743+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:15:50+08


psql (4.3.4.7)

输入 “help” 来获取帮助信息.

a=> select * from a;

id


1

(1 行记录)

5、将表a的属主改为用户b,此时用户a,用户b均可以对表a进行drop操作

[root@node1 ~]# psql -U a -d a

用户 a 的口令:

注意:


Login User: a

Login time: 2020-01-08 11:28:44.451+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:14:29+08


a=>altertablea ownertob;ALTERTABLEa=>\dt+关联列表 架构模式|名称|类型|拥有者|大小|描述----------+------+--------+--------+------------+------public|a|数据表|b|8192bytes|(1行记录)
a=>a=>insertintoavalues(2);INSERT01a=>select*froma;id----12(2行记录)
a=>begina->;BEGINa=>droptablea;DROPTABLEa=>rollback;ROLLBACKa=>a=>a=>select*froma a->;id----12(2行记录)a=>end;

警告: 没有事物在运行中

COMMIT

6、用户a创建同名模式a,创建表f,同时把模式a下所有表的查询权限赋给b

[root@node1 ~]# psql -U a -d a

用户 a 的口令:

注意:


Login User: a

Login time: 2020-01-08 11:28:44.451+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:14:29+08


a=>createschemaa;CREATESCHEMAa=>createtablef(idint);CREATETABLEa=>a=>a=>a=>\dt 关联列表 架构模式|名称|类型|拥有者----------+------+--------+--------a|f|数据表|apublic|a|数据表|b a=>grantselectonalltablesinschemaatob;GRANTa=>a=>a=>a=>\q

7、此时用户b仍然无法查询到模式a下的表f

[root@node1 ~]# psql -U b -d a

用户 b 的口令:

注意:


Login User: b

Login time: 2020-01-08 17:24:22.295389+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:15:50+08


psql (4.3.4.7)

输入 “help” 来获取帮助信息.

a=> select * from a.f;

错误: 对模式 a 权限不够

第1行select * from a.f;

8、将模式a的使用权限赋给用户b

[root@node1 ~]# psql -U a -d a

用户 a 的口令:

注意:


Login User: a

Login time: 2020-01-08 17:29:23.407098+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:14:29+08


psql (4.3.4.7)

输入 “help” 来获取帮助信息.

a=> grant usage on schema a to b;

GRANT

9、再次使用用户b登录就可以查询模式a下的表

[root@node1 ~]# psql -U b -d a

用户 b 的口令:

注意:


Login User: b

Login time: 2020-01-08 17:31:12.875106+08

Login Address: [local]

Last Login Status: SUCCESS

Login Failures: 0

Valied Until: 2020-01-15 11:15:50+08


psql (4.3.4.7)

输入 “help” 来获取帮助信息.

a=>select*froma.f;id----(0行记录

10、在会话级更改模式搜索路径参数,可临时解决其他模式下表的可见问题

a=>\dt 关联列表 架构模式|名称|类型|拥有者----------+------+--------+--------public|a|数据表|bpublic|b|数据表|apublic|c|数据表|apublic|d|数据表|a(4行记录)a=>setsearch_pathtoa,'$user',public;SETa=>\dt 关联列表 架构模式|名称|类型|拥有者----------+------+--------+--------a|f|数据表|apublic|a|数据表|bpublic|b|数据表|apublic|c|数据表|apublic|d|数据表|a(5行记录)
http://www.cnnetsun.cn/news/4620.html

相关文章:

  • Wan2.2-T2V-A14B能否生成第一视角视频?主观镜头实验
  • Wan2.2-T2V-A14B在自然灾害模拟教学视频中的应用价值
  • ‌智慧校园建设:如何做好供应商的资质审核与案例评估
  • E-Hentai图库一键下载终极指南:免费获取完整ZIP压缩包
  • 【剪映小助手源码精讲】第30章 素材获取服务
  • OpenVoice语音克隆技术深度解析:重塑现代教育语音交互体验
  • Wan2.2-T2V-A14B如何生成带有文字标题的片头片尾?
  • 必应Bing国内广告开户后如何投放?必应Bing国内搜索广告开户费用
  • Tabby实战避坑手册:从部署陷阱到性能调优的完整指南
  • Wan2.2-T2V-A14B在游戏过场动画预演中的可行性研究
  • 别再盯着性能参数了!开源 Claude 配置教会我的“极简主义编程”!
  • 租赁系统风险控制:如何应对用户租后不归还问题?
  • 终极指南:掌握utterances评论预览功能,让你的博客评论完美呈现
  • 绿色供应链视角下合肥市家电制造业物流系统优化分析(开题报告)
  • 为什么你的支付接口不安全?PHP非对称加密配置常见错误大盘点
  • intl-tel-input开发环境配置:从零构建国际电话号码输入组件
  • GPT-5.2:创作的未来,还是人类创意的威胁?
  • 计算机毕业设计springboot商务型酒店管理系统 SpringBoot 驱动的智能商务酒店运营平台 面向企业客户的 Java 微服务酒店综合管理系统
  • 成长故事 | 西安电子科技大学杨文杰:从密码套件的调用者成长为开源社区的贡献者
  • 改进算术优化算法DV-Hop应用毕业论文【附代码】
  • GLM-4.6V开源:从看懂到完成
  • 揭秘Dify如何破解加密PDF:3步实现高效文档解析(技术内幕公开)
  • Wan2.2-T2V-A14B能否生成舞蹈视频?舞种适配测试
  • Hunyuan3D-2技术架构深度解析:从原理到实践的创新之路
  • Electron-Egg 跨平台桌面开发终极指南:5分钟快速构建企业级应用
  • Wan2.2-T2V-A14B与Runway ML Gen-2生成效果横向评测
  • 从零构建uni-app电商移动端项目实战指南
  • 微服务性能提升300%?Symfony 8新特性在分布式系统中的实战应用
  • Wan2.2-T2V-A14B如何生成带有蜡烛点亮效果的纪念视频?
  • 视觉自回归模型终极指南:从像素序列到多模态AI的完整演进