数据库用户
创建用户
创建用户且设置密码
create user user01 password '123';
\du+ 查看用户user01,可以看见创建成功
创建用户设置密码和不可继承
create user02 password '123' noinherit;
修改用户的属性
设置用户的连接数
设置为1个
alter user user01 connection limit 1;
再次查看user01 用户的属性
设置用户的密码有效期
设置用户 user01 的密码有效期到 2024-12-12
alter user user01 valid until '2024-12-12';
注意:如果登陆失败,只有两种可能,一个是:密码过期,另一个是密码输入错误
数据库角色
创建角色并且设置密码
设置角色名字 role01 密码为 123
create role role01 password '123';
可以看见默认角色是无法登陆的
角色与用户继承(授权)
首先查看两个用户的属性
\dp 查看 默认模式 public下的表,这里我们以system用户查看s2表,可以看见成功查询了
当我们以user01用户查看s2表可以看见权限不够
user02不继承的用户也没权限
赋予role01角色读取表的权限
对public模式下的s2表赋予读取权限到role01角色中
grant SELET ON public.s2 to role01;
赋予用户隶属于role01角色
让user01和user02用户成员隶属与role01角色
grant role01 to user01,user02;
对比没有继承结果
可以发现user01用户可以查询s2表,但是user02不可以
转授权限
转授权读取权限
意思是可以运行授予的角色,转给其他人权限
grant SELECT on s2 to role01 with grant option;
可以看见 多了给*号,代表着转授权
转授权插入权限
grant insert on s2 to role01 with grant option;
移除权限
移除角色的所有权限
revoke ALL on s2 from role01
数据库开发管理工具
权限描述符:KSQL元命令查看
比如下面框框的,CTc指的是
- C-拥有创建对象权限
- T-创建临时权限
- c-创建连接
UC指的是:
- U-拥有对模式的使用权
- C-拥有创建对象权限
r指的是:拥有可读权限
至于空白,指的是所有人,什么权限都有
使用 information_schema 查看访问权限
通过字典视图来看
查找关联列表的名称
\dv *.table_pri*
table information_schema.table_privileges; # 然后查看这个表的权限
可以看见原理是这样的