postgresql
01 postgresql用户与权限管理
pg使用role概念管理数据库访问权限。
role是一些列相关权限的集合,一般把一系列相关权限赋予一个role,如果哪个用户需要这些权限,就把这些role赋予给相应用户。由于用户也有一系列相关权限,所以在pg中,用户和角色没有区别,一个用户也是一个角色,可以把一个用户的权限赋另外一个用户。
用户和角色在整个数据库实例中是全局的,在同一个实例的不同数据库中,看到的用户都是相同的。

pg登录及基础操作
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
-U 指定用户/role
-d 指定数据库
-h 指定服务器
-p 指定端口
\h 查看sql命令解释,比如\h select
\? 查看psql命令列表
\l 列出所有数据库
\du 列出所有用户
\c [database_name] 连接其他数据库
\d [table_anme] 列出表
\conninfo 列出当前数据库和连接的信息
创建用户和角色
pg中,用户和角色是一样的,角色默认没有login权限,授予login之后,也可以像用户一样登录
create user name [[with] option [...]]
create role name [[with] option [...]]
\h create user
\h create role
参考:https://juejin.cn/post/6844904105886892040
02 PG查看数据库连接
--列出所有数据库
\l
--连接指定数据库
\c <dbname>
--查看数据库连接
select * from pg_stat_activity where datname='<dbname>';
--终止活动连接 <pid>是pg_stat_activity里的pid字段
select pg_terminate_backend(<pid>)
03 格式化显示
-- 表格显示
\x auto
-- 扁平显示
\x
-- 默认格式
\x off
04 创建和删除数据库
create database <dbname>
encoding 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
TEMPLATE = template0;
-- 如果有连接,需要先终止掉连接
drop database <dbname>