【玩转PGSQL】基础管理防火墙及用户权限管理-知否知否

ops/2024/12/22 13:06:37/

基础管理

登录方式

psql -d postgres -h 127.0.0.1  -p 5432 -U postgre-d 库
-h IP
-p 端口
-U 用户

基础sql

-- 查看所有库
\l-- 创建库
create database test;-- 进入库
\c test-- 查看所有表
\d-- 查看表结构
\d t1;-- 查看所有用户
\du-- 列显示
\x-- 显示当前库下schema信息
\dn-- 创建表
create table t1(id int);-- 创建t2表复制t1表
create table  t2 (like t1);

pg防火墙介绍

此配置是按照从上到下的顺序读取的,应用顺序也是从上到下,当匹配到对应规则将不往下读取,注意编辑顺序!!!

cat >/pgdata/12/data/pg_hba.conf<<'EOF'
# TYPE  DATABASE        USER            ADDRESS                 METHOD 可设置/reject/md5/trust
# 配置自己对应的user/host 
host    all             all             0.0.0.0/0               md5
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# 允许具有复制权限的用户从本地主机进行复制连接
local   replication     all                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
EOFvim /pgdata/12/data/postgresql.conf
# 放开所有地址
listen_addresses = '*'  # 重启服务生效
pg_ctl  reload# 不重启重载配置文件
select pg_reload_conf();

用户管理

连接管理实例的的数据库对象

  • 用户定义语法
create user  # 创建用户 默认有登录权限
create role  # 创建角色 默认无登录权限
drop user    # 删除用户
alter user   # 修改用户
\du          # 查看所有用户\h create user  # 查看帮助
  • 示例:
-- 创建角色 test1  带超级权限 登录权限 配置密码为 dyh666
create role test1  with SUPERUSER LOGIN password 'dyh666';-- 普通用户
create role test2  with  LOGIN password 'dyh666';-- 创建复制用户
create role test3  with REPLICATION  LOGIN password 'dyh666';-- 修改用户
alter role test1 with NOSUPERUSER login password 'dyh666';-- 删除用户
drop user test1;

删除用户时不能存在属于这个用户的表

-- 方法 1: 修改将属主为 test1 用户 的表分配给 test2 用户
reassign owned by test1 to test2;-- 方法 2:删除属于 test1 的表 
-- 需要在每个有 test1 表的数据库运行 
-- 需要手动删除数据库或表空间
drop owned by test1;-- 删除用户
drop user test1;

权限管理

  • 权限简介

cluster权限:实例权限通过pg_hba.conf配置。

database权限:数据库权限通过grant和revoke操作schema配置。

TBS权限:表空间权限通过grant和revoke操作表、物化视图、索引、临时表配置。

schema权限:模式权限通过grant和revoke操作模式下的对象配置。

object权限:对象权限通过grant和revoke配置。

  • 权限定义

    • database 权限

      -- 授权test1用户对test库拥有create权限
      grant create on database test to test1;
      
    • schema 权限

      -- 创建schema 默认为当前用户
      create schema  test_schema;-- 创建schema test2 授权给 test1 用户
      create schema test2 authorization test1;-- 进入schema
      set search_path to  test_schema;-- 查看一个database下有几个schema
      select * from information_schema.schemata;-- 将test_schema的拥有者设置为test用户
      alter schema test_schema  owner to test;-- 进入test 库
      \c test-- 授权 test 用户 test_chema 下的所有表,增删改查权限
      grant select,insert,update,delete on all tables in schema test_schema  to test;-- 删除模式
      drop schema test1;-- 删除模式及其包含的对象
      drop schema test2 cascade;
      
    • object 权限

      使用角色组管理用户权限

      -- 创建角色组
      create role select_group;-- 授权 t1 表查询权限
      grant select on t1 to select_group;-- 创建可登录用户
      create role user_test with login;-- 授权 select_group 组给 user_test 用户
      grant select_group to user_test;
      

业务案例

需求:开发部门需要新上线一个业务,这个业务需要新建一个 test_app 库 , 创建一个schema,并创建一个 test_app_user 用户作为业务用户,对所有表拥有增删改的权限。

--创建库
create database test_app;--!!! 必须进库,不然会在当前库下创建
\c test_app--创建schema
create schema test_app_schema;--进入schmea
set search_path to  test_app_schema;--创建用户
create user test_app_user with password '123456';--授权用户为 schema 属主
alter schema test_app_schema owner to test_app_user;--授权用户操作 schema下所有表的操作权限
grant  insert,select,update  on all tables in schema test_app_schema to test_app_user;# 验证
-- 进库
\c test_app-- 查看schema
select * from information_schema.schemata;--要想删除用户必须回收所有权限 或 授权给其他用户
revoke all on schema test_app_schema from test_app_user;
revoke all on all tables in schema test_app_schema  from test_app_user;
revoke all on database test_app   from test_app_user;
revoke connect on database test_app  from test_app_user;
drop user test_app_user;# 查看xl_weibo_user用户的表权限信息
select * from information_schema.table_privileges where grantee='test_app_user';

知否?


http://www.ppmy.cn/ops/2037.html

相关文章

【Spring Boot 源码学习】SpringApplication 的 run 方法核心流程介绍

《Spring Boot 源码学习系列》 SpringApplication 的 run 方法核心流程介绍 一、引言二、往期内容三、主要内容3.1 run 方法源码初识3.2 引导上下文 BootstrapContext3.3 系统属性【java.awt.headless】3.4 早期启动阶段3.5 准备和配置应用环境3.6 打印 Banner 信息3.7 新建应用…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果 一、简单介绍 二、简单视频浮雕画效果实现原理 三、简单视频浮雕画效果…

OSPF动态路由实验(华为)

思科设备参考&#xff1a;OSPF动态路由实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 OSPF&#xff08;Open Shortest Path First&#xff09;是一种内部网关协议&#xff0c;主要用于在单一自治系统内决策路由。它是一种基于链路状态的路由协议&#xff0c;通过…

typescript 问号使用(??)(?.)

问号点&#xff08;?.&#xff09; 对象不为空才调用对象的属性。如果对象为空则返回undefined。 res.data.mstrmod?.CreateTime 如果mstrmod为空&#xff0c;createTime得到一个undefine 以下的如果createTime得到undefine再调用replace是会报错 &#xff0c;?.只能用来取值…

Mac上的PD虚拟机安装parallels tools问题

本文主要记录mac上的虚拟机软件安装好centos7.9的时候安装parallels tools的错误的解决办法&#xff1a; Centos 7.9虚拟机安装parallels tools 前言 在centos高版本上安装parallells tools时会报错&#xff0c;具体错误信息可以在/var/log/parallels.log文件中查看。 本文…

新零售门店、商品、会员管理指标体系总览

新零售&#xff0c;旨在打破传统零售业的边界&#xff0c;引入先进科技和数字化手段&#xff0c;通过整合线上线下渠道&#xff0c;全面提升用户体验&#xff0c;并实现更智能、高效、个性化的零售运营模式。这一模式不仅仅关注销售产品&#xff0c;更注重构建全方位的购物生态…

【Linux】引导过程与服务控制

目录 一、Linux操作系统引导过程 1.linux开机引导过程 2.系统初始化进程 1.init进程 2.进程启动方式 二、运行级别和Systemd单元类型 1.运行级别 2.Systemd 三、启动类故障恢复 1.修复MBR扇区故障 2.修复GRUB引导故障 3.root密码忘记的修改方式 四、系统服务控制 …

MySQL二阶段和三阶段提交

在分布式系统中&#xff0c;事务管理是一个至关重要的方面。MySQL作为一种常用的关系型数据库管理系统&#xff0c;提供了二阶段提交&#xff08;Two-Phase Commit&#xff0c;2PC&#xff09;和三阶段提交&#xff08;Three-Phase Commit&#xff0c;3PC&#xff09;等协议来支…