当前位置:   article > 正文

PostgreSQL学习笔记(三):psql、用户角色、系统表_postgresql查询用户角色

postgresql查询用户角色

PostgreSQL学习笔记(三):psql、用户角色、系统表

1. psql

  • psql是PostgreSQL的一个命令行交互式客户端;
  • 通过执行内置的元命令或sql语句查看管理数据库对象;
  • 字符界面,比图形化管理工具操作更直接方便;能够通过tab键自动补全;

常用命令:

\? #所有命令帮助
\c [database_name] #切换到指定的数据库
\c #显示当前数据库名称和用户
\conninfo #显示客户端的连接信息
\d #列出数据库中所有表
\d+ #列出数据库中所有表和详细信息
\dt #列出数据库中所有表
\d [table_name] #显示指定表的结构
\di #列出数据库中所有 index
\dv #列出数据库中所有 view
\du #显示所有用户
\dn #显示数据库中的schema
\h #sql命令帮助
\pset border 0|1|2 #更改查询结果边框显示风格
\q #退出连接
\set [参数名] [参数值] #修改参数,参数名大小写敏感;不加参数,则显示当前参数;
\timing #显示命令执行消耗的时间
\l #列出所有数据库
\encoding #显示字符集
\i testdb.sql #执行sql文件
\x #扩展展示结果信息,相当于MySQL的\G
\o /tmp/t1.txt #将下一条sql执行结果导入文件中
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2. 用户角色

2.1 概述

  • 数据库用户和操作系统用户不同,但是可以通过文件做映射;
  • PG通过角色role来管理数据库访问权限,role是一系列相关权限的集合;
  • role在整个cluster中是全局性的,即同一个服务器的不同数据库中,看到的用户是相同的;
  • PG的用户分为两类:
    • 超级用户–postgres
    • 普通用户–根据需要创建

2.2 user、role和group的区别

  • user:拥有login登录数据库权限的role;
  • role:可以拥有数据库对象,如表、索引,也可以把这些对象上的权限富裕其他橘色,以控制哪些用户对哪些对象拥有哪些权限;
  • group:不拥有replication/noreplication、connection limit属性的role;
  • 在PG8.1之前,user与group是不同类型的实体,现在被看做是role,任意一个role均可自由地在user与group之间转换;

2.3 创建用户、角色

  • CREATE USER|ROLE name [[WITH] option […]]

    option可以是:

    SUPERUSER|NOSUPERUSER

    CREATEDB|NOCREATEDB

    CREATEROLE|NOCREATEROLE

    ​LOGIN|NOLOGIN


    ​ 系统用户表:pg_user
    ​ 系统角色表:pg_roles

select rolname from pg_roles;
select usename from pg_user;
  • 1
  • 2

image-20231202213026719
​ 创建后,用户默认是可以登录的,而角色不能登录;
​ 创建用户时,会默认创建同名的角色,而创建角色只会创建角色。而当创建角色时赋予了登录权限时,才会在系统用户表中新增,也代表着可以使用角色名(成为用户)登录了。
image-20231202213317638

image-20231202213404046

  • DROP user|role “name” ,删除用户|角色:

    当用户拥有表时,会提示不能删除;image-20231202214430703转换关系:用户<—登录权限–>角色

2.4 授权

PostgreSQL的不同类型的权限:
SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE和USAGE;
img

  1. 使用GRANT命令将权限授予特定的用户或用户组;
GRANT <权限列表> on <数据库对象> to <用户或角色> -- 授权
GRANT <权限列表> on <数据库对象> to <用户或角色> with grant option;  -- 授权+授权权限
-- 任意一列的授权;
GRANT <权限列表>(<数据库对象的属性>) on <数据库对象> to <用户或角色> [ with grant option ]; 
  • 1
  • 2
  • 3
  • 4
  1. 使用 REVOKE 命令可以从某个特定环境中回收用户已经授予的权限;
REVOKE <权限列表> on <数据库对象> FROM <用户或角色>;
  • 1

3. 系统表、系统函数

​ 服务自动更新维护,不需要人工维护;

-- 系统表、视图
\dS [type]
 -- pg_tables 
 -- pg_views 
 -- pg_indexs
 -- pg_trigger
 -- pg_constraints
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

image-20231202223211962
查看支持的系统函数:

SELECT
  pg_proc.proname AS "函数名称",
  pg_type.typname AS "返回值数据类型",
  pg_proc.pronargs AS "参数个数"
FROM
  pg_proc
JOIN pg_type ON (pg_proc.prorettype = pg_type.oid);
 "函数名称",
  pg_type.typname AS "返回值数据类型",
  pg_proc.pronargs AS "参数个数"
FROM
  pg_proc
JOIN pg_type ON (pg_proc.prorettype = pg_type.oid);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/415429
推荐阅读
相关标签
  

闽ICP备14008679号