PostgreSQL02-用户管理

创建用户-createuser

创建一个名为 newuser 的非超级用户,newuser 继承自 pg_monitor 系统角色,
只能有 1 个连接,没有创建数据库的权限 ,没有创建用户的权限,并且立即给它设置密码,
/opt/pgsql/bin/createuser -h pghost1 -p 5432 -c 1 -g pg_monitor -D -R -S -P -e newuser
是否超级用户、是否允许创建数据库、是否允许创建用户这三个权限可以使用…
interactive 参数提供交互界面
/opt/pgsql/bin/createuser -h pghost1 -p 54322 -c 1 -g pg_monitor --interavtive -e -P newuser

删除用户-dropuser

/opt/pgsql/bin/dropuser -h pghost1 -p 5432 newuser

一个角色可以继承其他角色的权限从而成为其成员角色(member role)
拥有成员的角色成为组角色(group role)
组角色和普通角色的概念是相对而言的

创建组角色

create role username inherit;(可以将权限继承给成员角色)
create role username noinherit;(不可以)

psql有两个全局变量session_user和current_user,两个变量的值在最开始登陆时是一样的,可以通过以下命令来查看

select session_user,current_user;

set role 和 set session authoriztion
set role 无需superuser权限就可以执行
set role 只会修改current_user的值,不会修改session_user的值
set role 可以让执行角色(一般就是session_user)获取到所扮演角色的所有权限
只用超级用户才能执行set session authorization
set session authorization会修改两个全局变量的值
只要会话不中断,可以反复执行set session authorization

Bob用户获得SUPERUSER权限的方法

create role manager inherit;
CREATE ROLE Bob LOGIN PASSWORD '1234' VALID UNTIL 'infinity';
GRANT Manager TO Bob;
Alter ROLE Manager SUPERUSER;

以Bob身份登陆后执行
SET ROLE Manager;
ALTER ROLE Bob SUPERUSER;
posted @   立勋  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示