用户需求:新建一个用户 B,需要能够查询A用户的所有表,并且对以后新建的表也要有select权限。

问题分析:对于现有的表可以通过动态sql批量进行授权,但是未来新建的表要如何进行授权呢?

查询了帮助文档发现通过alter default privileges命令可以实现。

  • 命令描述

ALTER DEFAULT PRIVILEGES允许你设置将被应用于未来要创建的对象的特权(它不会影响分配给已经存在的对象的特权)。

*语法

ALTER DEFAULT PRIVILEGES

[ FOR { ROLE | USER } target_role [, ...] ]

[ IN SCHEMA schema_name [, ...] ]

abbreviated_grant_or_revoke

更具体语法请看官方帮助文档:

https://help.kingbase.com.cn/stage-api/profile/document/kes/v8r6/html/development/server-programming/sql/ref-sql/sql-alterdefaultprivileges.html

  • 测试

test=# \c test user1

您现在已经连接到数据库 "test",用户 "user1".

test=> create table t_user1 (id int);

CREATE TABLE

test=> insert into t_user1 values (2);

INSERT 0 1

test=> \c test system

您现在已经连接到数据库 "test",用户 "system".

test=# create role user2 with login;

CREATE ROLE

test=# alter role user2 with password '123456';

ALTER ROLE

test=# create schema user2 authorization user2;

CREATE SCHEMA

test=> GRANT USAGE ON SCHEMA user1 to user2;

GRANT

test=> ALTER DEFAULT PRIVILEGES IN SCHEMA user1 GRANT SELECT ON TABLES TO user2;

ALTER DEFAULT PRIVILEGES

test=> \c test user1

您现在已经连接到数据库 "test",用户 "user1".

test=> create table t2_user1 (id int);

CREATE TABLE

test=> insert into t2_user1 values (3);

INSERT 0 1

test=> \c test user2

您现在已经连接到数据库 "test",用户 "user2".

test=> select * from user1.t2_user1; --可以查询授权后新建的表

id


3

(1 行记录)

test=> select * from user1.t_user1; --对旧的对象权限没有影响

错误: 对表 t_user1 权限不够

最新文章

  1. 常look的Git命令
  2. IntelliJ添加Emacs编辑器
  3. tengine+tomcat配置
  4. 海王星给你好看!FineUI v4.0公测版发布暨《你找BUG我送书》活动开始(活动已结束!)
  5. IEnumerable接口
  6. XPATH 注入的介绍与代码防御
  7. 折腾iPhone的生活——运营商信号显示数据化
  8. 四种方法解析JSON数据
  9. CSSHack 兼容性
  10. 把Eclipse项目转换成Maven项目
  11. 1740: [Usaco2005 mar]Yogurt factory 奶酪工厂
  12. Python通过future处理并发
  13. 【框架学习与探究之AOP--Castle DynamicProxy】
  14. c# winform 视频转字符动画
  15. [Swift]LeetCode948. 令牌放置 | Bag of Tokens
  16. JavaScript中的高阶函数
  17. Spring再接触 Scope范围
  18. JS 数组方法
  19. 尚硅谷面试第一季-17Redis 在项目中的使用场景
  20. C# DES (ECB模式) 加密解密 --单倍长

热门文章

  1. SAP 文件操作类 CL_GUI_FRONTEND_SERVICES
  2. 关于swiper插件在vue2的使用
  3. zabbix实时监控mysql业务数据
  4. 扩展新的WCV到标准的WC后,不能在业务角色里面看见视图解决方法
  5. Entry键值对对象和Map集合遍历键值对方式
  6. day03_2_流程控制
  7. 管正雄:基于预训练模型、智能运维的QA生成算法落地
  8. Lambda表达式无参数无返回值的练习和Lambda表达式有参数有返回值的练习
  9. StringBuilder的原理
  10. Element 2 组件源码剖析之布局容器