PostgreSQL数据库授权与自增序列操作实例代码

 更新时间:2025年08月29日 10:10:24   作者:AAA_搬砖达人小郝  
在PostgreSQL中,自增序列是一种特殊的数据库对象,用于生成唯一的数字序列,通常用于主键值的自动生成,这篇文章主要介绍了PostgreSQL数据库授权与自增序列操作的相关资料,需要的朋友可以参考下

一、PostgreSQL 模式与权限管理

1、什么是模式?

在 PostgreSQL 中,模式(schema) 是数据库内的命名空间,用于组织表、序列、视图等对象。每个数据库可以包含多个模式,模式帮助隔离不同应用或模块的数据。例如,map 模式可能存储地图相关数据,而 spider 模式存储爬虫数据。

2、权限类型

PostgreSQL 的权限分为以下几类:

  • 模式权限:如 USAGE(访问模式中的对象)和 CREATE(在模式中创建对象)。

  • 表权限:如 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)等。

  • 序列权限:如 USAGE(使用 nextval 或 setval)、SELECT(查询 currval)。

权限可以通过 GRANT 命令分配给角色(用户或组),角色可以继承权限,简化管理。

3、权限授予的基本流程

1、创建用户或角色:

CREATE ROLE dzdtmap WITH LOGIN PASSWORD 'your_password';

2、授予模式权限以访问对象。

3、授予对象权限(如表或序列)以执行具体操作

二、授予权限

1、授予模式访问权限

GRANT USAGE ON SCHEMA map TO dzdtmap;
  • 作用:授予用户 dzdtmap 对 map 模式的 USAGE 权限。

  • 意义:允许 dzdtmap 引用 map 模式中的对象(如 map.some_table),但不授予对这些对象的操作权限。

  • 使用场景:当用户需要访问模式中的表或序列,但具体操作权限需单独授予。

  • 注意:若无 USAGE 权限,用户尝试访问 map 模式对象会抛出 ERROR: permission denied for schema map。

2、授予表权限

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA map TO dzdtmap;
  • 作用:授予 dzdtmap 对 map 模式中所有现有表的全部权限,包括 SELECT、INSERT、UPDATE、DELETE 等。

  • 意义:允许 dzdtmap 对这些表执行任何操作,适合开发或测试环境。

  • 限制:仅适用于执行时已存在的表。新创建的表不会自动继承这些权限。

  • 解决新表权限问题:使用 ALTER DEFAULT PRIVILEGES 为未来表设置默认权限:

ALTER DEFAULT PRIVILEGES FOR ROLE map_owner IN SCHEMA map GRANT ALL PRIVILEGES ON TABLES TO dzdtmap;

其中 map_owner 是创建表的角色(通常是模式拥有者)。

3、授予序列权限

GRANT USAGE, SELECT ON SEQUENCE spider.zjzx_menu_id_seq TO dzdtmap;
  • 作用:授予 dzdtmap 对 spider 模式中序列 zjzx_menu_id_seq 的 USAGE 和 SELECT 权限。

  • 权限说明

    • USAGE:允许使用 nextval()(获取下一个值)或 setval()(设置值)。

    • SELECT:允许使用 currval()(查询当前值)。

  • 使用场景:当 dzdtmap 需要为表生成唯一标识符(如插入数据时使用序列)或查询序列状态。

  • 注意:序列位于 spider 模式,而非 map,表明 dzdtmap 可能跨模式操作。

三、设置自增主键

1、创建序列

CREATE SEQUENCE jzzx_weather_forecast0717_id_seq
START WITH 4
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
  • 作用:创建名为 jzzx_weather_forecast0717_id_seq 的序列。

  • 参数说明

    • START WITH 4:序列从 4 开始。

    • INCREMENT BY 1:每次递增 1。

    • NO MINVALUE 和 NO MAXVALUE:无最小值和最大值限制。

    • CACHE 1:每次只缓存 1 个值,适合低并发场景。

  • 使用场景:为 jzzx_weather_forecast 表的 id 列生成唯一值。

2、 绑定序列到表列

alter table jzzx_weather_forecast alter column id set default nextval('jzzx_weather_forecast0717_id_seq');
  • 作用:将 id 列的默认值设置为序列的下一个值(nextval)。

  • 意义:新插入的行将自动获取序列的下一个值,实现主键自增。

注意事项

权限授予操作完成后建议验证用户权限是否生效,可以通过查询系统表确认权限状态。

自增序列创建时需要注意当前表的最大ID值,确保START WITH参数大于现有最大ID以避免冲突。序列名称建议包含表名和日期标识以便维护。

常用权限类型说明

  • USAGE: 允许使用模式中的对象
  • SELECT: 查询数据权限
  • ALL PRIVILEGES: 所有操作权限

数据库权限管理是系统安全的重要环节,应根据最小权限原则分配用户权限。自增序列是PostgreSQL实现自动递增主键的常用方法,比SERIAL类型更灵活可控。

总结

到此这篇关于PostgreSQL数据库授权与自增序列操作的文章就介绍到这了,更多相关pgSQL数据库授权与自增序列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • CentOS PostgreSQL 12 主从复制(主从切换)操作

    CentOS PostgreSQL 12 主从复制(主从切换)操作

    这篇文章主要介绍了CentOS PostgreSQL 12 主从复制(主从切换)操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL游标与索引选择实例详细介绍

    PostgreSQL游标与索引选择实例详细介绍

    这篇文章主要介绍了PostgreSQL游标与索引选择优化案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • PostgreSQL简介及实战应用

    PostgreSQL简介及实战应用

    PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高级特性、性能优化和实战应用,帮助读者全面掌握PostgreSQL,感兴趣的朋友跟随小编一起学习吧
    2025-08-08
  • postgresql逻辑复制的实现

    postgresql逻辑复制的实现

    本文介绍PostgreSQL逻辑复制实现,基于发布订阅模型,需设置WAL_LEVEL为logical,支持跨库备份,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • PostgreSQL与MySQL的锁与隔离级别操作方法

    PostgreSQL与MySQL的锁与隔离级别操作方法

    文章详细介绍了PostgreSQL和MySQL在锁机制上的区别,包括锁的粒度、实现方式、核心锁类型、死锁处理方式、实际使用场景、锁监控和诊断以及性能影响,文章还比较了两种数据库在不同场景下的适用性,并给出了选择建议,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • PostgreSQL创建新用户所遇见的权限问题以及解决办法

    PostgreSQL创建新用户所遇见的权限问题以及解决办法

    这篇文章主要给大家介绍了关于PostgreSQL创建新用户所遇见的权限问题以及解决办法, 在PostgreSQL中创建一个新用户非常简单,但可能会遇到权限问题,需要的朋友可以参考下
    2023-09-09
  • Postgresql删除数据库表中重复数据的几种方法详解

    Postgresql删除数据库表中重复数据的几种方法详解

    本文详细讲解了Postgresql删除数据库表中重复数据的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • postgreSQL自动生成随机数值的实例

    postgreSQL自动生成随机数值的实例

    这篇文章主要介绍了postgreSQL自动生成随机数值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 关于postgresql timestamp时间戳问题

    关于postgresql timestamp时间戳问题

    这篇文章主要介绍了关于postgresql timestamp时间戳问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • PostgreSQL 重复数据处理的操作方法

    PostgreSQL 重复数据处理的操作方法

    这篇文章主要介绍了PostgreSQL 重复数据处理的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论