关于 SEQUENCE 的 USAGE | SELECT | UPDATE 权限实例

2024-01-27 23:28

本文主要是介绍关于 SEQUENCE 的 USAGE | SELECT | UPDATE 权限实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 结论:
  • 查看 SEQUENCE 相关的权限
  • 实例

结论:

usage:  对应 nextval 执行权限
select: 对应 select * from <sequence_name>; 执行权限
update: 对应 setval 执行权限

查看 SEQUENCE 相关的权限

GRANT { { USAGE | SELECT | UPDATE }[, ...] | ALL [ PRIVILEGES ] }ON { SEQUENCE sequence_name [, ...]| ALL SEQUENCES IN SCHEMA schema_name [, ...] }TO role_specification [, ...] [ WITH GRANT OPTION ]

实例

psql
(postgres)test3=# create sequence test_id_seq;
CREATE SEQUENCE
(postgres)test3=# create user test with password 'test';
CREATE ROLE
(postgres)test3=# \du test List of rolesRole name | Attributes | Member of 
-----------+------------+-----------test   |            | {}(postgres)test3=# \c - test 
You are now connected to database "test3" as user "test".
(postgres)test3=> \dp+ test_id_seqAccess privilegesSchema |    Name     |   Type   | Access privileges | Column privileges | Policies 
--------+-------------+----------+-------------------+-------------------+----------public | test_id_seq | sequence |                   |                   | 
(1 row)-- 默认 新建的用户对序列无 usage/select/update 权限
(postgres)test3=> select * from test_id_seq; 
ERROR:  permission denied for sequence test_id_seq
(postgres)test3=> 
(postgres)test3=> \c - postgres 
You are now connected to database "test3" as user "postgres".
(postgres)test3=# grant select on SEQUENCE test_id_seq to test ;
GRANT
(postgres)test3=# \dp+ test_id_seqAccess privilegesSchema |    Name     |   Type   |  Access privileges  | Column privileges | Policies 
--------+-------------+----------+---------------------+-------------------+----------public | test_id_seq | sequence | postgres=rwU/postgres+|                   | |             |          | test=r/postgres   |                   | 
(1 row)
-- select 对应的 select * from  <sequence_name>; 
(postgres)test3=# 
(postgres)test3=# \c - test 
You are now connected to database "test3" as user "test".
(postgres)test3=> select * from test_id_seq ;last_value | log_cnt | is_called 
------------+---------+-----------75 |       8 | t
(1 row)(postgres)test3=> select nextval('test_id_seq');
ERROR:  permission denied for sequence test_id_seq
(postgres)test3=> 
(postgres)test3=> 
(postgres)test3=> select setval('test_id_seq',10,false);
ERROR:  permission denied for sequence test_id_seq
(postgres)test3=> -- usage 对应的是 nextval 执行权限
(postgres)test3=> \c - postgres
You are now connected to database "test3" as user "postgres".
(postgres)test3=# grant usage on SEQUENCE test_id_seq to test ;
GRANT
(postgres)test3=# \c - test 
You are now connected to database "test3" as user "test".
(postgres)test3=> select setval('test_id_seq',10,false);
ERROR:  permission denied for sequence test_id_seq
(postgres)test3=> select nextval('test_id_seq');nextval 
---------76
(1 row)(postgres)test3=> select nextval('test_id_seq');nextval 
---------77
(1 row)-- update 对应的是 setval 权限
(postgres)test3=> \c - postgres 
You are now connected to database "test3" as user "postgres".
(postgres)test3=# grant update on SEQUENCE test_id_seq  to test ;
GRANT
(postgres)test3=# \c - test 
You are now connected to database "test3" as user "test".
(postgres)test3=> select * from test_id_seq;last_value | log_cnt | is_called 
------------+---------+-----------77 |      31 | t
(1 row)(postgres)test3=> select nextval('test_id_seq');nextval 
---------78
(1 row)(postgres)test3=> select nextval('test_id_seq');nextval 
---------79
(1 row)(postgres)test3=> select setval('test_id_seq',100,false);setval 
--------100
(1 row)(postgres)test3=> select nextval('test_id_seq');nextval 
---------100
(1 row)
(postgres)test3=> exit

这篇关于关于 SEQUENCE 的 USAGE | SELECT | UPDATE 权限实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651804

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序