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数据库授权与自增序列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL 实现子查询返回多行的案例

    PostgreSQL 实现子查询返回多行的案例

    这篇文章主要介绍了PostgreSQL 实现子查询返回多行的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 详解PostgreSQL 表分区与继承

    详解PostgreSQL 表分区与继承

    本文将深入剖析PostgreSQL表分区与继承的实现机理,结合最新版本(16版本)的特性演进,通过大量生产级代码示例,揭示如何设计高效的分区方案、优化分区查询性能,并巧妙运用继承特性构建灵活的数据模型,感兴趣的朋友一起看看吧
    2025-04-04
  • postgresql 实现replace into功能的代码

    postgresql 实现replace into功能的代码

    这篇文章主要介绍了postgresql 实现replace into功能的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 解决postgresql无法远程访问的情况

    解决postgresql无法远程访问的情况

    这篇文章主要介绍了解决postgresql无法远程访问的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • phpPgAdmin 配置文件参数说明中文版

    phpPgAdmin 配置文件参数说明中文版

    这篇文章主要介绍了phpPgAdmin配置文件config.inc.php-dist中注释的详细说明,并翻译成中文,需要的朋友可以参考下
    2014-03-03
  • PostgreSQL自定义函数的使用

    PostgreSQL自定义函数的使用

    本文主要介绍了PostgreSQL自定义函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • PostgreSQL简介及实战应用

    PostgreSQL简介及实战应用

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

    如何查看postgres数据库端口

    这篇文章主要介绍了如何查看postgres数据库端口操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql中的ctid解读

    postgresql中的ctid解读

    这篇文章主要介绍了postgresql中的ctid使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • PostGreSql 判断字符串中是否有中文的案例

    PostGreSql 判断字符串中是否有中文的案例

    这篇文章主要介绍了PostGreSql 判断字符串中是否有中文的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论