一. PostgreSQL介绍
PostgreSQL是一款功能强大的开源关系型数据库,遵循BSD许可证,底层基于C语言实现
PostgreSQL支持丰富的数据类型,具有强大的并发控制,社区特别活跃,适合各种规模的应用需求
由于PostgreSQL支持二次封装。目前国内许多数据库基于PostgreSQL进行封装,如华为的GaussDB,阿里的PolarDB For PostgreSQL等
PostgreSQL的开源协议和Linux内核版本的开源协议一致
由于PostgreSQL开源,因此衍生出许多数据迁移工具,可以快速的从MySQL,SQLServer,Oracle平滑迁移到PostgreSQL中
二. PostgreSQL和MySQL的区别
MySQL不支持的内容:
不支持序列概念
性能优化监控工具少,定位问题的成本较高
MySQL基于GPL开源协议,对商业闭源应用有限制
复杂查询能力较弱
PostgreSQL相对MySQL上述问题特点:
极其丰富的数据类型
PostgreSQL存在序列概念
具有极其丰富的插件
支持主从复制的同步行为,可以实现数据的0丢失
PostgreSQL的MVCC实现和MySQL不同,PostgreSQL的一行数据可存储多个版本,每个事务版本拥有独立的事务ID,理论空间约为42亿
三. PostgreSQL的安装
基于Ubuntu 24.04安装
方式一:基于官网方式进行安装
进入PostgreSQL下载页面,选择Linux,选择Ubuntu发行版,根据官方网站方式进行下载

方式二:手动配置仓库进行安装
导入存储库密钥
sudo apt install curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc创建源文件
# 使用vim命令创建源文件
# vim /etc/apt/sources.list.d/pgdg.sources
Types: deb deb-src
URIs: https://apt.postgresql.org/pub/repos/apt
Suites: noble-pgdg
Architectures: amd64
Components: main
Signed-By: /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc安装PostgreSQL
sudo apt update
# 根据所需更换18为所需版本
sudo apt install postgresql-18Tips:以上方式为通过PostgreSQL官方地址安装,受网络影响
四. PostgreSQL的配置
连接配置
PostgreSQL默认和MySQL一样,不支持远程连接,需修改配置文件
修改配置文件,切记重启服务
# postgresql.conf
# - Connection Settings -
# 修改监听地址为'*'
listen_addresses = '*'
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)日志配置
五. PostgreSQL的基本使用
构建用户
# 构建超级管理用户
# CREATE USER默认具有登录权限
CREATE USER 名称 WITH SUPERUSER PASSWORD '密码';
CREATE ROLE 名称 WITH SUPERUSER PASSWORD '密码';Schema模式
数据库中的文件夹或命令空间
权限管理的基本单位
防止对象名称冲突的隔离层
一个数据库可存在多个模式,每个模式可存在独立的表,视图,索引和触发器等,权限颗粒度比MySQL更细一些
语法
-- 构建Schema模式,默认所有者为当前用户
CREATE SCHEMA Schema模式名;
-- 构建Schema模式,指定所有者
CREATE SCHEMA Schema模式名 AUTHORIZATION 所有者用户;
-- 修改Schema模式名
ALTER SCHEMA 旧Schema模式名 RENAME TO 新Schema模式名;
-- 修改Schema模式的所有者
ALTER SCHEMA Schema模式名 OWNER TO 所有者用户;
-- 删除空的Schema模式
DROP SCHEMA Schema模式名;
-- 强制删除Schema模式及其所有对象
DROP SCHEMA Schema模式名 CASCADE;