当前位置: 首页 > news >正文

Linux 下 PostgreSQL 安装与常用操作指南

前言

基本初始操作

1. 确认系统环境

2. 安装 PostgreSQL

2.1 CentOS / RHEL / RockyLinux

2.2 Ubuntu / Debian

3. 初次使用 PostgreSQL

常用内置命令(\ 开头)

4. 数据库与用户管理

数据库操作

用户与权限操作

5. 表操作与数据管理

6. 数据导入与导出

7. 高级查询与管理

8. 远程访问配置

附录

PostgreSQL 常用命令速查表

连接数据库

内置快捷命令(\ 开头)

数据库操作

用户/角色操作

表操作

数据导入导出

高级查询/管理

PostgreSQL 常用数据类型

1️⃣ 数值类型

2️⃣ 字符串类型

3️⃣ 日期和时间类型

4️⃣ 布尔类型

5️⃣ 枚举与 JSON 类型

6️⃣ 二进制类型

PostgreSQL 用户权限表

角色属性与权限

对象级权限

视图和函数权限

总结

前言

PostgreSQL 是一款功能强大、开源免费的关系型数据库管理系统,常用于网站、企业应用以及数据分析场景。本文将从 Linux 系统出发,介绍 PostgreSQL 的安装、基本使用以及常用操作,帮助你快速上手。


基本初始操作

1. 确认系统环境

在安装 PostgreSQL 前,先确认你的 Linux 发行版:

cat /etc/*release

常见的 Linux 发行版主要分为两类:

  • RedHat 系列(CentOS、RHEL、RockyLinux)

  • Debian 系列(Ubuntu、Debian)

本文会分别介绍两类系统的安装方法。


2. 安装 PostgreSQL

2.1 CentOS / RHEL / RockyLinux

  1. 安装官方仓库:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  1. 禁用系统自带模块(避免版本冲突):

sudo dnf -qy module disable postgresql
  1. 安装 PostgreSQL(以 15 版本为例):

sudo yum install -y postgresql15 postgresql15-server
  1. 初始化数据库:

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
  1. 设置开机自启并启动服务:

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

2.2 Ubuntu / Debian

  1. 添加官方仓库和 GPG Key:

sudo apt update
sudo apt install -y wget ca-certificates
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  1. 安装 PostgreSQL(以 15 版本为例):

sudo apt update
sudo apt install -y postgresql-15
  1. 启动并设置开机自启:

sudo systemctl enable postgresql
sudo systemctl start postgresql
systemctl status postgresql

3. 初次使用 PostgreSQL

安装完成后,系统会自动创建一个 postgres 用户和数据库。可以使用以下命令登录:

sudo -i -u postgres
psql

也可以指定用户名和数据库直接登录:

psql -U postgres -d postgres

常用内置命令(\ 开头)

命令功能
\l查看数据库列表
\c dbname切换数据库
\du查看用户/角色列表
\d tablename查看表结构
\dt查看所有表
\q退出 psql

4. 数据库与用户管理

数据库操作

CREATE DATABASE testdb;    -- 创建数据库
DROP DATABASE testdb;      -- 删除数据库
SELECT current_database(); -- 查看当前数据库

用户与权限操作

CREATE USER testuser WITH PASSWORD '123456';          -- 创建用户
CREATE USER adminuser WITH SUPERUSER PASSWORD 'pass'; -- 创建超级用户
ALTER USER testuser WITH PASSWORD 'newpassword';     -- 修改密码
DROP USER testuser;                                  -- 删除用户
GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser; -- 授权
REVOKE ALL PRIVILEGES ON DATABASE testdb FROM testuser; -- 撤销权限

5. 表操作与数据管理

-- 创建表
CREATE TABLE users (id SERIAL PRIMARY KEY,name VARCHAR(50) NOT NULL,email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
​
-- 插入数据
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
​
-- 查询数据
SELECT * FROM users;
SELECT name, email FROM users WHERE id = 1;
​
-- 更新数据
UPDATE users SET email='alice123@example.com' WHERE id=1;
​
-- 删除数据
DELETE FROM users WHERE id=1;
​
-- 删除表
DROP TABLE users;
​
-- 清空表
TRUNCATE TABLE users;

6. 数据导入与导出

# 导出数据库
pg_dump -U postgres -d testdb -f testdb.sql
​
# 导入数据库
psql -U postgres -d testdb -f testdb.sql
​
# 导出并压缩
pg_dump testdb | gzip > testdb.sql.gz
​
# 导入压缩文件
gunzip -c testdb.sql.gz | psql -U postgres -d testdb

7. 高级查询与管理

-- 查看表大小
SELECT pg_size_pretty(pg_total_relation_size('users'));
​
-- 查看数据库大小
SELECT pg_size_pretty(pg_database_size('testdb'));
​
-- 查看当前连接
SELECT * FROM pg_stat_activity;
​
-- 查看表及索引信息
\d+ users

8. 远程访问配置

如果需要远程连接 PostgreSQL,需要修改配置文件:

  1. 编辑 postgresql.conf

listen_addresses = '*'
  1. 编辑 pg_hba.conf,添加远程访问权限:

host    all     all     0.0.0.0/0    md5
  1. 重启 PostgreSQL 服务:

sudo systemctl restart postgresql-15   # CentOS/RHEL
sudo systemctl restart postgresql      # Ubuntu/Debian

附录

PostgreSQL 常用命令速查表

连接数据库

命令说明
sudo -i -u postgres切换到系统用户 postgres
psql进入默认 postgres 数据库
psql -U 用户名 -d 数据库 -h 主机 -p 端口指定用户/数据库/主机/端口连接
psql -U postgres -d postgres -c "SQL语句"执行单条 SQL 并退出

内置快捷命令(\ 开头)

命令说明
\l查看数据库列表
\c dbname切换数据库
\du查看用户/角色
\d tablename查看表结构
\dt查看所有表
\dv查看视图
\df查看函数
\dn查看模式(schema)
\q退出 psql
\x切换扩展显示模式
\?查看所有 \ 命令
\h查看 SQL 命令帮助

数据库操作

SQL说明
CREATE DATABASE dbname;创建数据库
DROP DATABASE dbname;删除数据库
SELECT current_database();查看当前数据库

用户/角色操作

SQL说明
CREATE USER username WITH PASSWORD 'pass';创建用户
CREATE USER admin WITH SUPERUSER PASSWORD 'pass';创建超级用户
ALTER USER username WITH PASSWORD 'newpass';修改密码
DROP USER username;删除用户
GRANT ALL PRIVILEGES ON DATABASE db TO username;授权数据库
REVOKE ALL PRIVILEGES ON DATABASE db FROM username;撤销权限

表操作

SQL说明
CREATE TABLE tname (...);创建表
\d tname查看表结构
INSERT INTO tname ...;插入数据
SELECT * FROM tname;查询数据
UPDATE tname ...;更新数据
DELETE FROM tname ...;删除数据
TRUNCATE TABLE tname;清空表
DROP TABLE tname;删除表

数据导入导出

命令说明
pg_dump -U postgres -d db -f db.sql导出数据库
psql -U postgres -d db -f db.sql导入数据库
`pg_dump dbgzip > db.sql.gz`
`gunzip -c db.sql.gzpsql -U postgres -d db`

高级查询/管理

SQL说明
SELECT pg_size_pretty(pg_database_size('db'));查看数据库大小
SELECT pg_size_pretty(pg_total_relation_size('tname'));查看表大小
SELECT * FROM pg_stat_activity;查看当前连接
\d+ tname查看表及索引信息

PostgreSQL 常用数据类型

1️⃣ 数值类型

数据类型说明示例
SMALLINT2 字节整数0 ~ 32767
INTEGER / INT4 字节整数-2147483648 ~ 2147483647
BIGINT8 字节整数-9223372036854775808 ~ 9223372036854775807
SERIAL自动增长整数(整数+序列)id SERIAL PRIMARY KEY
BIGSERIAL大整数自动增长id BIGSERIAL PRIMARY KEY
NUMERIC(p,s) / DECIMAL(p,s)精确小数,可指定精度和小数位NUMERIC(10,2)
REAL4 字节浮点数3.14
DOUBLE PRECISION8 字节浮点数3.1415926

2️⃣ 字符串类型

数据类型说明示例
CHAR(n) / CHARACTER(n)固定长度字符串,不足用空格填充CHAR(10)
VARCHAR(n) / CHARACTER VARYING(n)可变长度字符串,长度限制VARCHAR(50)
TEXT不限长度的字符串TEXT

3️⃣ 日期和时间类型

数据类型说明示例
DATE日期,年-月-日2025-09-21
TIME [ WITHOUT TIME ZONE ]时间(不带时区)14:30:00
TIMESTAMP [ WITHOUT TIME ZONE ]日期+时间2025-09-21 14:30:00
TIMESTAMPTZ日期+时间+时区2025-09-21 14:30:00+08
INTERVAL时间间隔INTERVAL '1 day 2 hours'

4️⃣ 布尔类型

数据类型说明示例
BOOLEAN / BOOL布尔值TRUE / FALSE

5️⃣ 枚举与 JSON 类型

数据类型说明示例
ENUM枚举类型,预定义固定值CREATE TYPE mood AS ENUM ('happy','sad');
JSONJSON 数据'{"name": "Alice", "age": 18}'
JSONB二进制存储 JSON,更快查询'{"name": "Alice", "age": 18}'::jsonb

6️⃣ 二进制类型

数据类型说明示例
BYTEA二进制数据文件、图片等

PostgreSQL 用户权限表

角色属性与权限

权限/属性作用范围说明示例/备注
SUPERUSER全局拥有数据库内所有权限,相当于 root创建超级用户:CREATE USER adminuser WITH SUPERUSER;
CREATEDB全局允许创建新数据库CREATE USER testuser WITH CREATEDB;
CREATEROLE全局允许创建和管理角色(用户)可以创建新用户并授予权限
LOGIN全局允许角色登录数据库没有 LOGIN 的角色只能作为权限集合使用(角色组)
INHERIT全局是否继承被授予角色的权限默认继承,方便权限组合
REPLICATION全局允许参与流复制(Streaming Replication)用于主从复制用户
BYPASSRLS全局绕过行级安全策略(Row Level Security)高级安全策略控制

对象级权限

权限作用对象说明示例
CONNECT数据库允许用户连接数据库GRANT CONNECT ON DATABASE testdb TO testuser;
CREATE数据库 / schema允许在数据库或模式中创建对象GRANT CREATE ON SCHEMA public TO testuser;
TEMPORARY / TEMP数据库允许创建临时表GRANT TEMP ON DATABASE testdb TO testuser;
USAGEschema允许访问模式内对象GRANT USAGE ON SCHEMA public TO testuser;
SELECT表 / 视图查询表数据GRANT SELECT ON TABLE users TO readonlyuser;
INSERT插入数据GRANT INSERT ON TABLE users TO testuser;
UPDATE修改数据GRANT UPDATE ON TABLE users TO testuser;
DELETE删除数据GRANT DELETE ON TABLE users TO testuser;
TRUNCATE清空表数据GRANT TRUNCATE ON TABLE users TO testuser;
REFERENCES外键引用权限GRANT REFERENCES ON TABLE users TO testuser;
TRIGGER创建触发器权限GRANT TRIGGER ON TABLE users TO testuser;
ALL PRIVILEGES表 / 数据库所有可用权限GRANT ALL PRIVILEGES ON TABLE users TO testuser;

视图和函数权限

权限作用对象说明示例
EXECUTE函数 / 存储过程允许调用函数GRANT EXECUTE ON FUNCTION func_name() TO testuser;
USAGE序列允许使用序列GRANT USAGE ON SEQUENCE users_id_seq TO testuser;
SELECT / UPDATE序列查询/修改序列值GRANT SELECT, UPDATE ON SEQUENCE users_id_seq TO testuser;

总结

本文介绍了 PostgreSQL 在 Linux 系统下的安装方法以及最常用的操作,包括:

  • 数据库和用户管理

  • 表和数据操作

  • 数据导入导出

  • 远程访问配置

掌握这些基础操作后,你就可以在 Linux 下快速部署和管理 PostgreSQL 数据库了。

http://www.dtcms.com/a/393725.html

相关文章:

  • 【Linux】CentOS7网络服务配置
  • 使用C++编写的一款射击五彩敌人的游戏
  • 【LeetCode hot100|Week3】数组,矩阵
  • linux-环境配置-指令-记录
  • 自学嵌入式第四十四天:汇编
  • RTX 4090助力深度学习:从PyTorch到生产环境的完整实践指南——模型部署与性能优化
  • PythonOCC 在二维平面上实现圆角(Fillet)
  • Unity 性能优化 之 实战场景简化(LOD策略 | 遮挡剔除 | 光影剔除 | 渲染流程的精简与优化 | Terrain地形优化 | 主光源级联阴影优化)
  • [GXYCTF2019]禁止套娃1
  • 【论文阅读】-《Triangle Attack: A Query-efficient Decision-based Adversarial Attack》
  • 云微短剧小程序系统开发:赋能短剧生态,打造全链路数字化解决方案
  • 《从延迟300ms到80ms:GitHub Copilot X+Snyk重构手游跨服社交系统实录》
  • 力扣2132. 用邮票贴满网格图
  • Halcon学习--视觉深度学习
  • LeetCode:40.二叉树的直径
  • dplyr 是 R 语言中一个革命性的数据操作包,它的名字是 “data plier“ 的缩写,意为“数据折叠器“或“数据操作器“
  • 使用Node.js和PostgreSQL构建数据库应用
  • 设计模式(C++)详解—享元模式(1)
  • C++线程池学习 Day08
  • VALUER倾角传感器坐标系的选择
  • 解决 win+R 运行处以及文件资源管理器处无法使用 wt、wsl 命令打开终端
  • R语言 生物分析 CEL 文件是 **Affymetrix 基因芯片的原始扫描文件**,全称 **Cell Intensity File**。
  • Apache Spark Shuffle 文件丢失问题排查与解决方案实践指南
  • xtuoj 0x05-C 项链
  • STM32F429I-DISC1【读取板载运动传感器数据】
  • 【Kafka面试精讲 Day 21】Kafka Connect数据集成
  • 2025数据资产管理平台深度分析:技术特性、与选型逻辑
  • RabbitMQ Java 解决消息丢失、重复和积压问题
  • 深入解析 Spring AI 系列:解析请求参数处理
  • OpenLayers地图交互 -- 章节五:捕捉交互详解