【一文搞懂PGSQL】2.基础管理

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 本文档介绍了 PostgreSQL 的基础管理操作,包括登录方式、基本 SQL 命令、防火墙配置 (`pg_hba.conf`)、用户管理(创建、修改、删除用户)及权限管理(数据库、模式、对象权限)。提供了创建数据库、表及用户的具体示例,并展示了如何通过角色组管理用户权限。最后通过一个业务案例演示了如何为开发部门的新业务创建数据库、schema 和用户,并授予相应的操作权限。

基础管理

登录方式

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
EOF


vim /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: 修改将属主为 test 的表分配给 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';
相关文章
|
11月前
|
关系型数据库 数据库 PostgreSQL
【一文搞懂PGSQL】1.简述和安装
PostgreSQL(简称PG或PGSQL)是一款使用C和C++语言开发的开源关系型数据库管理系统。其官网为 [www.postgresql.org](https://www.postgresql.org/),中文社区为 [www.postgres.cn](http://www.postgres.cn)。PG采用了多层逻辑结构:第一层为实例,第二层为数据库(每个实例下可有多个相互独立的数据库),第三层为Schema(每个数据库下包含多个Schema)。每个Schema下可以创建表、视图、索引、函数等数据库对象。
|
11月前
|
关系型数据库 MySQL 数据库
【MySQL】mysql异常宕机无法启动处理过程
【MySQL】mysql异常宕机无法启动处理过程
|
11月前
|
编解码 缓存 关系型数据库
【MySQL 核心】MySQL数据恢复-dbsake
【MySQL 核心】MySQL数据恢复-dbsake
|
11月前
|
关系型数据库 PostgreSQL
【一文搞懂PGSQL】5. 流复制
PostgreSQL流复制架构支持多种常见配置,包括基本的主从复制、结合PGPool-II的读写分离以及使用repmgr实现高可用性。基础环境中,主节点与备用节点分别位于不同IP。配置涵盖创建复制用户、调整核心参数以支持流复制,并确保归档与日志功能正常工作。从节点需通过备份恢复并配置为待机模式,以实现数据同步。此外,还介绍了如何验证复制状态及手动切换主从节点的方法,以及同步复制参数的配置细节。
|
11月前
|
SQL 关系型数据库 MySQL
MySQL实现并发控制的过程
数据库系统到底是怎么进行并发访问控制的?本文以 MySQL 8.0.35 代码为例,尝试对 MySQL 中的并发访问控制进行整体介绍。
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
152121 30
|
11月前
|
SQL 关系型数据库 数据库
【一文搞懂PGSQL】4.逻辑备份和物理备份 pg_dump/ pg_basebackup
本文介绍了PostgreSQL数据库的备份与恢复方法,包括数据和归档日志的备份,以及使用`pg_dump`和`pg_basebackup`工具进行逻辑备份和物理备份的具体操作。通过示例展示了单库和单表的备份与恢复过程,并提供了错误处理方案。此外,还详细描述了如何利用物理备份工具进行数据损坏修复及特定时间点恢复(PITR)的操作步骤,以应对误操作导致的数据丢失问题。
|
11月前
|
运维 监控 关系型数据库
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。
|
11月前
|
SQL 存储
【TiDB原理与实战详解】3、 集群升级和逻辑备份恢复~学不会? 不存在的!
TiDB集群可通过打补丁和版本升级来维护。打补丁针对特定组件(如TiDB或TiKV)进行,而版本升级包括不停机升级和停机升级两种方式,前者会重启部分组件。升级前需更新tiup工具并调整拓扑配置,确保集群健康。TiDB的数据备份与恢复依赖于Dumpling和TiDB Lightning工具,前者负责数据导出,后者用于数据导入。导出时推荐使用小文件和多线程以提升效率,并可通过多种参数控制导出细节。恢复时需注意备份目录与存储节点分离,并可通过配置文件控制导入过程,支持断点续传及错误处理策略。此外,4.0及以上版本支持库表过滤功能,便于灵活管理数据导入。
|
11月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。

数据库

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问