DAV_postgresql_2-user_role

数据库角色用来管理数据库访问权限,简化权限的管理

用户和角色在整个数据库集簇中是全局性的,不是针对某个单一数据库,只要有足够的权限,用户可以访问所有数据库的对象。

数据库用户可以分为两类

超级用户 -- postgres

普通用户 -- 根据需要创

user:拥有login登陆数据库权限的role

role: 可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其 它角色,以控制哪些用户对哪些对象拥有哪些权限

group:不拥有replication/noreplication、connection limit属性的role

在系统命令行使用createuser命令

createuser username

在psql命令行使用create user(role)指令

CREATE user[ROLE] rolename

创建用户实例:

CREATE USER dav1 SUPERUSER PASSWORD 'u1'; --创建一个具有超级用户权限的 用户

• CREATE USER dav2 CREATEDB PASSWORD 'u2'; --创建一个具有建库权限的用户

• CREATE USER dav_r1 LOGIN; --创建一个具有登录权限的用户,默认值

• CREATE ROLE dav_r2 encrypted PASSWORD '123456' VALID UNTIL '2025-02-27'; --创建一个带有加密密码且具有有效时间的用户

注: 属性LOGIN、SUPERUSER和CREATEROLE被视为特殊权限,它们不会像其它数据库对象的普通权限那样被继承。

创建角色实例:

• CREATE ROLE manager; --创建一个角色

• CREATE ROLE dav createdb; --创建一个具有建库权限的角色

• CREATE ROLE dav_r1 LOGIN; --创建一个具有登录权限的角色,类似于用户

• CREATE ROLE dav_r2 encrypted PASSWORD '123456' VALID UNTIL '2025-02-27'; --创建 一个带有加密密码且具有有效时间的角色

查看用户

testdb=> \d

通过数据库字典表来查看用户信息

testdb=> \d pg_use

通过数据库字典表来查看

testdb=> select * from pg_user where usename='dav';

通过数据库字典表来查看角色信息

testdb=> \d pg_role

查看角色信息

testdb=> select rolname ,rolsuper ,rolinherit ,rolcreatedb ,rolcanlogin from pg_roles where rolname='dav_r1';

修改用户实例:

• ALTER USER dav RENAME TO dav3; --修改用户的名字

• ALTER USER dav2 PASSWORD 'dav123435'; --修改用户的密码

• ALTER USER dav2 CREATEROLE; --修改用户的权限

• ALTER USER dav2 IN DATABASE dav_db RESET ALL; --修改数据库testdb中的参数重 设为默认值

修改角色实例:

• ALTER ROLE dav RENAME TO dav1; --修改角色的名字

• ALTER ROLE dav1 SUPERUSER; --修改角色的权限

• ALTER ROLE dav1 LOGIN; --修改角色的权限

在系统命令行使用dropuser命令

dropuser username;

在psql命令行使用create user(role)指令 drop role rolename;

或 drop user username;

DROP ROLE IF EXISTS role_name;

注意事项:

• 1、只用超级用户能够删除超级用户

• 2、只有具有createrole权限的用户能删除非超级用户

• 3、删除用户前,需要先删除依赖该用户的对象、权限等信息

• 4、任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,任何赋予该组角色的权限也都必须被撤消。

• 5、删除组role只会删除组的role本身,组的成员并不会被删除

DROP USER dav;

DROP USER IF EXISTS dav5;

DROP ROLE IF EXISTS dav6;

注意:删除用户和角色所用命令可以通用

相关推荐
Paraverse_徐志斌2 小时前
MySQL 线上大表 DDL 如何避免锁表(pt-online-schema-change)
数据库·mysql·ddl·mysql锁·锁表·pt-osc
哈哈幸运3 小时前
MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境
linux·运维·数据库·mysql·性能优化
愚公搬代码3 小时前
【愚公系列】《Python网络爬虫从入门到精通》055-Scrapy_Redis分布式爬虫(安装Redis数据库)
数据库·爬虫·python
pwzs3 小时前
深入浅出 MVCC:MySQL 并发背后的多版本世界
数据库·后端·mysql
大熊猫今天吃什么3 小时前
【一天一坑】空数组,使用 allMatch 默认返回true
前端·数据库
双叶8364 小时前
(51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)
c语言·数据库·单片机·嵌入式硬件·mongodb·51单片机·nosql
XY.散人4 小时前
初识Redis · C++客户端list和hash
数据库·redis·缓存
码上飞扬4 小时前
深入 MySQL 高级查询:JOIN、子查询与窗口函数的实用指南
数据库·mysql
海洋与大气科学5 小时前
【matlab】地图上的小图
开发语言·数据库·matlab
Geek__19926 小时前
Sqlite3交叉编译全过程
jvm·数据库·sqlite