PostgreSQL 入门学习教程,从入门到精通,在Ubuntu22.04上安装PostgreSQL16数据库(3)
在Ubuntu 22.04上安装和配置PostgreSQL 16是一项常见的数据库管理任务。由于Ubuntu 22.04的默认软件源中通常包含的是较旧版本的PostgreSQL如14或15因此安装PostgreSQL 16通常需要添加官方的APT仓库。以下是关于在Ubuntu 22.04上安装、部署及基础使用PostgreSQL 16的详细知识点指南包含具体的步骤、案例代码及详细注释。知识点一环境准备与官方源配置核心概念Linux软件包管理器APT默认源可能不包含最新的大版本数据库。为了安装特定版本如PostgreSQL 16必须添加PostgreSQL官方提供的APT仓库签名密钥和源列表。操作步骤更新本地包索引。安装必要的依赖工具curl,gnupg,lsb-release。导入PostgreSQL官方GPG密钥。添加PostgreSQL 16的仓库地址。再次更新包索引以识别新仓库中的包。案例代码# 1. 更新现有的软件包列表确保获取最新的元数据# sudo: 以超级用户权限执行# apt update: 更新本地包索引sudoaptupdate# 2. 安装必要的依赖工具# curl: 用于传输数据这里用来下载GPG密钥# gnupg: GNU隐私守卫用于处理密钥# lsb-release: 用于确定Ubuntu的版本代号如jammysudoaptinstall-ycurlgnupg lsb-release# 3. 导入PostgreSQL官方仓库的GPG签名密钥# 这一步是为了确保后续下载的软件包未被篡改来源可信# 将密钥写入到 /etc/apt/trusted.gpg.d/ 目录下curl-fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|\sudogpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg# 4. 添加PostgreSQL 16的APT源# 动态获取当前Ubuntu版本的代号Ubuntu 22.04的代号是 jammy# 将源地址写入 /etc/apt/sources.list.d/ 目录下的新文件echodeb http://apt.postgresql.org/pub/repos/apt$(lsb_release -cs)-pgdg main|\sudotee/etc/apt/sources.list.d/pgdg.list# 5. 再次更新包索引让系统识别新添加的PostgreSQL 16仓库sudoaptupdate知识点二安装PostgreSQL 16与服务管理核心概念通过APT安装指定版本的软件包。PostgreSQL安装后会自动创建一个名为postgres的系统用户并启动数据库服务。我们需要掌握如何指定版本安装以及如何管理服务状态启动、停止、开机自启。操作步骤安装postgresql-16和postgresql-contrib-16包含额外实用工具。验证安装版本。检查服务状态并设置开机自启。案例代码# 1. 安装PostgreSQL 16及其贡献模块# postgresql-16: 数据库核心服务端# postgresql-contrib-16: 包含一些额外的插件和工具如pg_stat_statements等# -y: 自动确认安装无需手动输入yessudoaptinstall-y postgresql-16 postgresql-contrib-16# 2. 验证安装版本# psql --version: 显示客户端版本确认是否为16psql --version# 预期输出示例: psql (PostgreSQL) 16.x# 3. 检查PostgreSQL服务状态# systemctl status: 查看服务是否正在运行 (active (running))sudosystemctl status postgresql16-main# 注意在某些配置下服务名可能是 postgresql 或 postgresql-16# 4. 设置PostgreSQL服务开机自启# enable: 启用开机自启# --now: 同时立即启动服务如果尚未启动sudosystemctlenable--now postgresql16-main# 5. 如果服务未运行手动启动它sudosystemctl start postgresql16-main知识点三用户管理与身份验证配置 (pg_hba.conf)核心概念PostgreSQL默认安装后超级用户postgres只能通过本地操作系统用户postgres进行免密登录peer认证。若要允许密码登录或远程连接必须修改配置文件pg_hba.confHost-Based Authentication。关键文件/etc/postgresql/16/main/pg_hba.conf: 控制客户端认证规则。/etc/postgresql/16/main/postgresql.conf: 主配置文件监听地址等。操作步骤切换到postgres用户。进入数据库命令行。创建新的数据库用户并设置密码。修改pg_hba.conf允许密码认证。重载配置使生效。案例代码# 1. 切换到系统自带的postgres用户# 只有该用户默认可以免密登录数据库sudo-i -u postgres# 2. 进入PostgreSQL交互式终端psql# --- 以下命令在 psql 提示符 (#) 下执行 -----3. 创建一个新的数据库用户app_user并设置密码 -- CREATEUSER:创建用户语法 -- WITH PASSWORD: 指定加密密码 -- LOGIN: 允许该用户登录 CREATEUSERapp_user WITH PASSWORDStrongPassword123!LOGIN;--4. 创建一个测试数据库my_database并授权给新用户 -- CREATE DATABASE: 创建数据库 CREATE DATABASE my_database OWNER app_user;--5. 退出psql终端\q# --- 回到 bash 终端 (仍为 postgres 用户) ---# 6. 修改 pg_hba.conf 以允许本地密码登录 (md5 或 scram-sha-256)# 使用 nano 或 vim 编辑器# 路径通常为: /etc/postgresql/16/main/pg_hba.confsudonano/etc/postgresql/16/main/pg_hba.conf# [编辑操作指南]# 找到类似下面的一行 (IPv4本地连接):# host all all 127.0.0.1/32 scram-sha-256# 或者 (本地socket连接):# local all all peer## 为了演示密码登录可以将 peer 改为 scram-sha-256 (推荐) 或 md5# 修改后示例:# local all all scram-sha-256# 保存并退出编辑器 (CtrlO, Enter, CtrlX)# 7. 重载PostgreSQL配置使更改生效而无需重启服务# systemctl reload: 重新加载配置文件sudosystemctl reload postgresql16-main# 8. 退出postgres系统用户回到普通用户exit知识点四SQL基础语法与实战案例核心概念安装完成后需要通过SQL语言操作数据。本部分涵盖DDL数据定义语言和DML数据操作语言。重点包括建表、约束、插入、查询、更新和删除。场景在my_database数据库中创建一个employees表并进行增删改查操作。案例代码# 使用新用户 app_user 登录数据库# -U: 指定用户名# -d: 指定数据库名# -h: 指定主机 (localhost 强制使用TCP/IP连接从而触发密码验证若配置了local password也可省略)psql -U app_user -d my_database -h localhost# 输入之前设置的密码: StrongPassword123!SQL 操作脚本 (在 psql 终端内执行)-- -- 1. DDL: 数据定义 (创建表结构)-- -- 创建员工表 employees-- CREATE TABLE: 创建新表-- IF NOT EXISTS: 如果表不存在才创建防止报错CREATETABLEIFNOTEXISTSemployees(emp_idSERIALPRIMARYKEY,-- SERIAL: 自增整数PRIMARY KEY: 主键约束first_nameVARCHAR(50)NOTNULL,-- VARCHAR(50): 可变长度字符串NOT NULL: 非空约束last_nameVARCHAR(50)NOTNULL,emailVARCHAR(100)UNIQUENOTNULL,-- UNIQUE: 唯一约束确保邮箱不重复hire_dateDATEDEFAULTCURRENT_DATE,-- DATE: 日期类型DEFAULT: 默认值为当前日期salaryNUMERIC(10,2),-- NUMERIC(10, 2): 精确数值总共10位小数2位departmentVARCHAR(50),is_activeBOOLEANDEFAULTTRUE-- BOOLEAN: 布尔类型);-- 查看表结构描述-- \d: psql元命令describe table\d employees;-- -- 2. DML: 数据操作 (插入数据)-- -- 插入单条记录-- INSERT INTO: 插入数据语法-- VALUES: 指定对应的值INSERTINTOemployees(first_name,last_name,email,salary,department)VALUES(San,Zhang,san.zhangexample.com,8500.00,Engineering);-- 插入多条记录INSERTINTOemployees(first_name,last_name,email,salary,department)VALUES(Li,Wang,li.wangexample.com,9200.50,Marketing),(Wei,Zhao,wei.zhaoexample.com,7800.00,Engineering),(Fang,Li,fang.liexample.com,11000.00,Management);-- -- 3. DQL: 数据查询 (SELECT)-- -- 查询所有员工-- SELECT *: 选择所有列SELECT*FROMemployees;-- 条件查询查找薪资大于8000的员工-- WHERE: 过滤条件-- ORDER BY: 排序DESC表示降序SELECTfirst_name,last_name,salaryFROMemployeesWHEREsalary8000ORDERBYsalaryDESC;-- 聚合查询统计各部门的平均薪资-- GROUP BY: 分组-- AVG(): 聚合函数计算平均值SELECTdepartment,AVG(salary)asavg_salaryFROMemployeesGROUPBYdepartment;-- 模糊查询查找姓氏以 Z 开头的员工-- LIKE: 模式匹配% 代表任意字符SELECT*FROMemployeesWHERElast_nameLIKEZ%;-- -- 4. DML: 更新与删除 (UPDATE DELETE)-- -- 更新数据给Engineering部门的员工加薪10%-- UPDATE: 更新表-- SET: 设置新值-- 注意务必加 WHERE 条件否则会更新全表UPDATEemployeesSETsalarysalary*1.10WHEREdepartmentEngineering;-- 验证更新结果SELECTfirst_name,department,salaryFROMemployeesWHEREdepartmentEngineering;-- 删除数据删除离职员工 (假设 is_active 为 false)-- 先模拟更新一个状态UPDATEemployeesSETis_activeFALSEWHEREemailwei.zhaoexample.com;-- 执行删除-- DELETE FROM: 删除行DELETEFROMemployeesWHEREis_activeFALSE;-- -- 5. 清理环境 (可选)-- -- 删除表DROPTABLEIFEXISTSemployees;-- 退出 psql\q知识点五远程访问配置 (进阶)核心概念默认情况下PostgreSQL只监听本地回环地址localhost/127.0.0.1。若需从其他服务器连接需修改postgresql.conf中的listen_addresses并确保防火墙放行5432端口。操作步骤修改postgresql.conf监听所有IP。确保pg_hba.conf允许远程IP段连接。配置Ubuntu防火墙UFW。重启服务。案例代码# 1. 修改监听地址配置# 将 listen_addresses 设置为 * 表示监听所有网络接口sudosed-is/#listen_addresses localhost/listen_addresses *//etc/postgresql/16/main/postgresql.conf# 2. 配置 pg_hba.conf 允许特定网段 (例如 192.168.1.0/24) 使用密码登录# 追加一行到文件末尾echohost all all 192.168.1.0/24 scram-sha-256|\sudotee-a /etc/postgresql/16/main/pg_hba.conf# 3. 配置防火墙 (如果使用 UFW)# 允许 PostgreSQL 默认端口 5432sudoufw allow5432/tcp# 4. 重启 PostgreSQL 服务使监听地址更改生效# restart: 完全重启服务sudosystemctl restart postgresql16-main# 5. 验证监听状态# ss -tlnp: 查看TCP监听端口# grep 5432: 过滤postgres相关行sudoss -tlnp|grep5432# 预期输出应包含 0.0.0.0:5432 或 :::5432而不仅仅是 127.0.0.1:5432总结通过以上五个知识点的学习与实践您已经在Ubuntu 22.04上完成了环境搭建正确配置了官方源并安装了PostgreSQL 16。服务管理掌握了服务的启动、停止和自启。安全配置理解了pg_hba.conf的作用并配置了密码认证。SQL实战熟练运用了建表、约束、CRUD增删改查及聚合查询。网络扩展学会了如何开启远程访问能力。这套流程是生产环境部署PostgreSQL的基础建议在实际操作中根据具体的网络安全策略调整pg_hba.conf中的IP白名单。

相关新闻

方盾滤毒防尘面罩使用四大误区,别让防护形同虚设

方盾滤毒防尘面罩使用四大误区,别让防护形同虚设

方盾滤毒防尘面罩是粉尘、有毒气体等污染环境中,保护人体呼吸系统的关键防护装备,其正确使用直接关系到使用者的身体健康与生命安全。然而在实际使用过程中,不少人因对防护原理不了解、操作不规范,陷入各类使用误区,这…

2026/7/5 7:16:54 阅读更多 →
多组学之互作组—RNA结合蛋白

多组学之互作组—RNA结合蛋白

1 RBP概述RNA结合蛋白(RBPs)在转录后基因表达调控过程中起着十分重要的作用。包括RNA的加工(加帽、可变剪接、加polyA)、RNA编辑、RNA修饰、RNA定位、翻译和降解等过程。在人类生命活动中,RBP的失效会导致癌症、代谢疾…

2026/5/17 6:58:04 阅读更多 →
API风险监测系统:从“静态防护”走向“数据流转安全”的智能底座

API风险监测系统:从“静态防护”走向“数据流转安全”的智能底座

一、概要(提示:当业务跑得越来越快,真正的安全不再是“守住数据”,而是“看清数据在跑什么”。)在移动支付、在线医疗、智能政务和数字金融高度普及的今天,企业的核心业务几乎全部构建在 API 之上。每一次下…

2026/7/4 21:54:37 阅读更多 →

最新新闻

行业领先·审查通过·高性能|运营商行业数据库审计和监测最佳实践指南

行业领先·审查通过·高性能|运营商行业数据库审计和监测最佳实践指南

一、方案概要:数据化落地的全周期数据库安全治理体系【提示】本段立足运营商数字化转型全局,聚焦产品核心特性与落地成效,系统性概述方案核心价值与行业定位。在数字基建升级与数据合规强监管态势下,电信运营商数据库安全治理成为…

2026/7/5 13:42:12 阅读更多 →
踩坑3周,我在实验室内网搭了个零公网请求的论文AIGC筛查本地系统

踩坑3周,我在实验室内网搭了个零公网请求的论文AIGC筛查本地系统

搞AIGC内容本地筛查的这三周我人都麻了,之前先后试了GPTZero、Originality.ai、团象AIGC检测、Crossplag、Copyscape、PaperPass旗下的AI检测,全不好用。这些工具要么强制要求把全文上传公网服务器,要么对理工科论文的公式部分误判率高到离谱…

2026/7/5 13:42:12 阅读更多 →
11、<简单>有一个六位数,其个位数字7,现将个位数字移至首位(十万位),而其余各位数字顺序不变,均后退一位,得到一个新的六位数,假如新数为I旧数的4倍,求原来的六位数

11、<简单>有一个六位数,其个位数字7,现将个位数字移至首位(十万位),而其余各位数字顺序不变,均后退一位,得到一个新的六位数,假如新数为I旧数的4倍,求原来的六位数

#include <iostream> using namespace std;int main() {// old 是原六位数&#xff0c;个位固定为7for (long old 100007; old < 999997; old 10){// 拆分前5位long front old / 10;// 个位7移到十万位&#xff0c;生成新六位数long newNum 700000 front;// 判断…

2026/7/5 13:40:12 阅读更多 →
终极精简指南:使用PowerShell脚本让Windows 11瘦身50%

终极精简指南:使用PowerShell脚本让Windows 11瘦身50%

终极精简指南&#xff1a;使用PowerShell脚本让Windows 11瘦身50% 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否曾为Windows 11那臃肿的系统体积和缓慢的…

2026/7/5 13:40:12 阅读更多 →
从《中国统计年鉴》到可比数据:手把手教你计算不变价GDP

从《中国统计年鉴》到可比数据:手把手教你计算不变价GDP

1. 为什么需要计算不变价GDP&#xff1f; 我第一次接触GDP数据时&#xff0c;发现一个奇怪现象&#xff1a;某城市2000年GDP是1000亿元&#xff0c;2020年GDP是8000亿元&#xff0c;看起来增长了8倍。但老师告诉我&#xff0c;这个比较毫无意义&#xff0c;因为没考虑物价变化。…

2026/7/5 13:40:12 阅读更多 →
编程启蒙|Scratch 转 Python 系列第 3 天完整教程

编程启蒙|Scratch 转 Python 系列第 3 天完整教程

本篇是零基础 Python 自学系列 Scratch 转 Python 第 3 天笔记&#xff0c;适合纯小白入门&#xff0c;内容包含实操代码、详细讲解与配套练习题&#xff0c;全程 Scratch 积木代码 Python 双向对照教学。 一、昨日内容复盘&#xff08;Scratch 转 Python Day2 for 循环与 ra…

2026/7/5 13:36:11 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻