跳到主要内容

postgresql

01 postgresql用户与权限管理

pg使用role概念管理数据库访问权限。

role是一些列相关权限的集合,一般把一系列相关权限赋予一个role,如果哪个用户需要这些权限,就把这些role赋予给相应用户。由于用户也有一系列相关权限,所以在pg中,用户和角色没有区别,一个用户也是一个角色,可以把一个用户的权限赋另外一个用户。

用户和角色在整个数据库实例中是全局的,在同一个实例的不同数据库中,看到的用户都是相同的。

img

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>