欢迎光临
我们一直在努力

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

前言

1. 确认系统环境

2. 安装 PostgreSQL

2.1 CentOS / RHEL / RockyLinux

2.2 Ubuntu / Debian

3. 初次使用 PostgreSQL

常用内置命令(\\ 开头)

4. 数据库与用户管理

数据库操作

用户与权限操作

5. 表操作与数据管理

6. 数据导入与导出

7. 高级查询与管理

8. 远程访问配置

总结

附录:PostgreSQL 常用命令速查表

连接数据库

内置快捷命令(\\ 开头)

数据库操作

用户/角色操作

表操作

数据导入导出

高级查询/管理

PostgreSQL 常用数据类型表

数值类型

字符串类型

日期和时间类型

布尔类型

枚举与 JSON 类型

二进制类型

PostgreSQL 用户权限表(角色属性与权限)

对象级权限

视图和函数权限

PostgreSQL 核心文件路径

1. 安装目录(二进制文件与核心程序)

2. 数据目录(数据库文件、日志、配置)

3. 配置文件路径

4. 日志文件路径

5. 服务管理脚本/单元文件

如何查看实际路径?

总结

前言

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


1. 确认系统环境

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

cat /etc/*release

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

  • RedHat 系列(CentOS、RHEL、RockyLinux)

  • Debian 系列(Ubuntu、Debian)

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


2. 安装 PostgreSQL

2.1 CentOS / RHEL / RockyLinux

  • 安装官方仓库:

  • sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  • 禁用系统自带模块(避免版本冲突):

  • #如报错没有dnf命令可无视,继续向下执行
    sudo dnf -qy module disable postgresql

  • 安装 PostgreSQL(以 15 版本为例):

  • sudo yum install -y postgresql15 postgresql15-server

  • 初始化数据库:

  • sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

  • 设置开机自启并启动服务:

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


    2.2 Ubuntu / Debian

  • 添加官方仓库和 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 –

  • 安装 PostgreSQL(以 15 版本为例):

  • sudo apt update
    sudo apt install -y postgresql-15

  • 启动并设置开机自启:

  • 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,需要修改配置文件:

    编辑 postgresql.conf:

    #60行,取消注释
    listen_addresses = '*'

    编辑 pg_hba.conf,添加远程访问权限:

    #87行
    host   all     all     0.0.0.0/0   md5

    重启 PostgreSQL 服务:

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

    创建一个测试用户


    总结

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

    • 数据库和用户管理

    • 表和数据操作

    • 数据导入导出

    • 远程访问配置

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

    附录: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 db | gzip > db.sql.gz
    gunzip -c db.sql.gz | psql -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 常用数据类型表

    数值类型

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

    字符串类型

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

    日期和时间类型

    数据类型说明示例
    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'

    布尔类型

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

    枚举与 JSON 类型

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

    二进制类型

    数据类型说明示例
    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;
    USAGE schema 允许访问模式内对象 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 核心文件路径

    1. 安装目录(二进制文件与核心程序)

    系统系列默认安装路径
    CentOS/RHEL /usr/pgsql-15/
    Ubuntu/Debian /usr/lib/postgresql/15/

    包含 bin、lib、share 等子目录,如 psql、pg_dump、postgres 等可执行文件位于 bin/ 下。


    2. 数据目录(数据库文件、日志、配置)

    系统系列默认数据目录路径
    CentOS/RHEL /var/lib/pgsql/15/data/
    Ubuntu/Debian /var/lib/postgresql/15/main/

    包含:

    • postgresql.conf:主配置文件

    • pg_hba.conf:客户端认证配置文件

    • pg_wal/:WAL 日志目录

    • base/:实际数据库文件存储位置


    3. 配置文件路径

    配置文件CentOS/RHELUbuntu/Debian
    postgresql.conf /var/lib/pgsql/15/data/postgresql.conf /etc/postgresql/15/main/postgresql.conf
    pg_hba.conf /var/lib/pgsql/15/data/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf

    4. 日志文件路径

    系统系列日志文件路径(默认)
    CentOS/RHEL /var/lib/pgsql/15/data/log/ 或系统日志
    Ubuntu/Debian /var/log/postgresql/

    日志文件通常命名为 postgresql-15-main.log 或类似。


    5. 服务管理脚本/单元文件

    系统系列服务单元文件路径
    CentOS/RHEL /usr/lib/systemd/system/postgresql-15.service
    Ubuntu/Debian /lib/systemd/system/postgresql.service(或 /etc/systemd/system/)

    如何查看实际路径?

    你可以在 PostgreSQL 中使用以下 SQL 查询关键路径:

    sql

    — 查看数据目录
    SELECT setting FROM pg_settings WHERE name = 'data_directory';
    ​
    — 查看配置文件路径
    SELECT setting FROM pg_settings WHERE name = 'config_file';
    ​
    — 查看 HBA 文件路径
    SELECT setting FROM pg_settings WHERE name = 'hba_file';


    总结

    类型CentOS/RHEL 系列Ubuntu/Debian 系列
    安装目录 /usr/pgsql-15/ /usr/lib/postgresql/15/
    数据目录 /var/lib/pgsql/15/data/ /var/lib/postgresql/15/main/
    配置文件 /var/lib/pgsql/15/data/postgresql.conf /etc/postgresql/15/main/
    日志文件 /var/lib/pgsql/15/data/log/ /var/log/postgresql/

    这些路径是 PostgreSQL 安装后的典型路径,具体版本号(如 15)可根据实际安装版本调整。

    赞(0)
    未经允许不得转载:171主机测评 » Linux 下 PostgreSQL 安装与常用操作指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址