PostgreSQL 角色权限管理
PostgreSQL中使用”角色”的概念,表示用户账户。拥有登录权限的角色称为可登录角色。一个角色可以继承其他角色的权限,从而成为其成员角色,一个拥有成员角色的角色被称为组角色。
PostgreSQL新版本去除了”用户”和”组”的概念,取而待之的是”可登录角色”和”组角色”。但是为保持前向兼容,create user 和 create group 这两个命令依然支持,但建议最好不要使用。
在PostgreSQL 安装过程中数据库初始化,系统会默认创建一个postgres的角色,同时会创建一个同名(postgres)的数据库。安装完成后要做的第一件事就是用psql或者pgAdmin工具以postgres角色身份登录,然后创建其他已规划好的角色。
角色
1.创建普通用户角色
create role username1 login password '123456' createdb valid until 'infinity'; create role username2 login password '123456' craterole valid until 'infinity'; create role username3 login password '123456' login valid until 'infinity’; |
valid 是可选的,其功能是为此角色权限设置有效期,过期后所有权限都将失效,默认为'infinity',即永不过期
createdb修饰符表示为此角色赋予创建新数据库的权限
craterole修饰符表示为此角色赋予创建新角色的权限
login 修饰符表示此角色只有登录权限
2.创建超级用户角色
create role username4 login password '123456' superuser valid until '2020-1-1 00:00:00'; |
3.修改角色权限
alter role username4 nologin nocreatedb; |
组角色
1.创建组角色
create role username5 inherit; grant username5 to username1; grant username5 to username2; |
Inherit表示username5的任何一个成员角色都将自动继承除“超级用户权限”外的所有权限。出于安全考虑,PostgreSQL不允许超级用户权限通过继承的方式传递。
2.从组角色继承权限
PostgreSQL还有一个奇葩功能是禁止组角色将其权限授予其成员角色,该功能通过NOINHERIT 关键字控制。因此创建组角色时务必显式声明INHERIT或者NOINHERIT关键字。
有些权限无法继承,例如前面提到的SUPERUSER超级用户权限。但是其成员角色可以通过SET ROLE 命令来实现冒名顶替其父角色的身份,从而得到超级用户权限,但是这种冒名顶替仅在当前会话存储期间有效。
例如:username1是username5的成员角色,其可以通过下列命令实现冒名顶替的目的。
SET ROLE username5
当然这是非永久授权行为,一旦会话结束,超级用户权限将被回收。
然而,命令:SET SESSION AUTHORIZATION username1,更加强大。
两者比较:
(1)首先,只有具备SUPERUSER权限的角色才可以执行SET SESSION AUTHORIZATION,SET ROLE任何一个成员角色都可以执行;
(2)其次,SET SESSION AUTHORIZATION可以使当前角色扮演系统中任何一个其他角色,SET ROLE仅限于扮演父角色。
(3)从系统内部实现机理看,每个会话会有两个表示当前用户身份的环境变量:一个是session_user,即当前用户登录带的原始身份;一个是current_user,即当前用户所扮演的身份,默认二者一致。SET SESSION AUTHORIZATION命令会将session_user和current_user都替换为所扮演角色的相应身份ID,而SET ROLE只会修改current_user,而保持session_user不变。这也意味着SET SESSION AUTHORIZATION命令会对后续的SET ROLE命令产生影响,因为原始身份session_user发生了变化;而SET ROLE不会对后续的SET SESSION AUTHORIZATION产生影响,因为原始身份session_user未发生变化。
相关推荐
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (角色和权限 角色和权限 角色和权限 ) 52 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、...
PostgreSQL学习手册(角色和权限) PostgreSQL学习手册(数据库管理) PostgreSQL学习手册(数据库维护) PostgreSQL学习手册(系统表) PostgreSQL学习手册(系统视图) PostgreSQL学习手册(客户端命令) PostgreSQL学习手册...
* 权限控制包括对用户和角色的权限设置、访问控制列表(ACL)等。 七、PostgreSQL 14 的性能优化 * 性能优化是 PostgreSQL 14 的重要方面,包括查询优化、索引设计和数据库调整等。 * 查询优化包括查询重写、索引...
数据库角色和权限 19. 管理数据库 20. 用户认证 21. 区域 22. 日常数据库维护工作 23. 备份与恢复 24. 高可用性与负载均衡 25. 监控数据库的活动 26. 监控磁盘使用情况 27. 可靠性和预写式日志 28. 回归...
18. 数据库角色和权限 19. 管理数据库 20. 用户认证 21. 区域 22. 日常数据库维护工作 23. 备份与恢复 24. 高可用性与负载均衡 25. 监控数据库的活动 26. 监控磁盘使用情况 27. 可靠性和预写式日志 28. ...
主要介绍了PostgreSQL教程(十二):角色和权限管理介绍,本文讲解了数据库角色、角色属性、权限、角色成员,需要的朋友可以参考下
技术路线 Asp.net Core Mvc EntityFrameworkCore Bootstrap AdminLTE PostgreSQL 实现功能 组织机构管理 角色管理 用户管理 功能管理 权限管理
管理和运行 PostgreSQL docker 容器的 Ansible 角色。 有关使用 docker 镜像的。 角色变量 docker_postgres__name (默认值:postgres):此名称用于主文件夹路径的名称和容器的名称。 docker_postgres__image ...
实现功能:管理员管理、角色管理、部门管理,可操作本部门及子部门数据;菜单管理、定时任务、参数管理、字典管理、系统日志,没有数据权限;业务功能,按照用户数据权限,查询、操作数据【没有本部门数据权限,也能...
C#课设项目-基于ASP.NET开发的EasyCms后台权限管理系统源码+项目说明+sql数据库.zipC#课设项目-基于ASP.NET开发的EasyCms后台权限管理系统源码+项目说明+sql数据库.zipC#课设项目-基于ASP.NET开发的EasyCms后台权限...
后端(Spring Boot + MyBatis Plus) Spring Boot: 作为后端...权限管理组件: 开发或选择适合的权限管理组件,用于在前端实现用户、角色、权限的管理和控制。 其他关键技术和功能 API 安全性: 使用 JWT(JSON Web
包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、...
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
角色对应用程序授权(多个前台应用公用一个后台权限管理系统) 部门对用户授权 7. 提供字典表用于前台网站个性化配置 8. 完全响应式布局(支持电脑、平板、手机等所有主流设备) 9. 内置多数据源支持,配置简单...
## 权限管理 用户管理 角色管理 菜单管理 通用字典 登录日志 异常日志 Hangfire定时任务 单位组织 职位信息 代码生成辅助 ## CMS内容管理 栏目管理 文章管理 模板管理 模板匹配 静态页面生成(可以...
然后,需要创建地理数据库,选择合适的数据库管理系统,如 IBM DB2、Informix、Microsoft SQL Server、Oracle、PostgreSQL 等。接着,需要部署 ArcSDE 软件,创建地理数据库实例,例如 Oracle 实例或 SQL Server ...
- 用户管理:包括用户注册、登录、权限管理等功能。 - 报表统计:提供各类报表统计功能,如货物进出库报表、配送状态报表等。 ### 2. 技术选型 - **前端**:HTML5、CSS3、JavaScript(可选框架如Bootstrap、Vue.js...
4. **权限管理**:根据用户角色设置不同的权限,例如普通用户只能查看和编辑自己的名片信息,而管理员可以管理所有用户的名片信息。 5. **数据存储**:使用数据库存储名片信息,常用的数据库包括MySQL、PostgreSQL...
- 用户管理:包括用户注册、登录、权限管理等功能。 - 通知公告:发布疫情相关的通知和公告。 - 数据可视化:通过图表展示疫情数据,帮助用户更直观地理解疫情情况。 ### 2. 技术选型 - **前端**:HTML5、CSS3、...