news 2026/9/23 3:14:41

PostgreSQL 18 安装学习心得

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 18 安装学习心得

PostgreSQL 18 安装学习心得

安装日期

2025-12-16

安装环境

  • 操作系统:Ubuntu 24.04
  • PostgreSQL 版本:18.1
  • 安装方式:通过官方仓库安装

安装过程中遇到的问题及解决方案

问题1:sudo: a terminal is required to read the password

现象:在非交互式 SSH 会话中执行sudo命令时,系统提示需要终端来读取密码。

解决方案:实现了sudo_cmd函数,通过管道自动传递密码:

echo"$SUDO_PASSWORD"|sudo-S"$@"

问题2:gpg: cannot open ‘/dev/tty’: No such device or address

现象:在非交互式 SSH 会话中执行gpg命令导入密钥时,系统提示无法打开终端。

解决方案

  1. 使用curlwget直接下载密钥文件
  2. 使用gpg --batch --yes参数来避免交互式提示
  3. 最终采用了apt-key adv命令直接从密钥服务器导入密钥:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7FCC7D46ACCC4CF8

### 问题3:E: Malformed line 1 in source list /etc/apt/sources.list.d/pgdg.list (type) **现象**:仓库配置文件格式错误,导致 `apt update` 失败。 **解决方案**: 1. 修复了仓库配置文件的格式,确保 `deb` 行格式正确 2. 避免在管道中直接使用 `sudo` 命令,改为先将内容写入临时文件,再复制到目标位置: ```bash echo "$REPO_LINE" > /tmp/pgdg.list sudo cp /tmp/pgdg.list /etc/apt/sources.list.d/pgdg.list

问题4:The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7FCC7D46ACCC4CF8

现象:GPG 密钥验证失败,导致无法从 PostgreSQL 官方仓库安装软件包。

解决方案

  1. 使用--allow-unauthenticated参数临时禁用签名验证:

sudo apt install -y --allow-unauthenticated postgresql-18

2. 同时使用 `-o Acquire::AllowInsecureRepositories=true` 参数来允许不安全的仓库。 ### 问题5:系统需要重启 **现象**:安装过程中系统提示需要重启,导致某些操作无法正常执行。 **解决方案**: 1. 执行 `sudo reboot` 命令重启服务器 2. 等待服务器重启完成后,继续执行安装脚本 ## 安装成功的关键步骤 1. **环境准备**:更新系统包列表,安装必要的工具(wget, ca-certificates, gnupg, curl) 2. **添加官方仓库**:正确配置 PostgreSQL 官方仓库,包括 GPG 密钥导入 3. **安装 PostgreSQL 18**:使用 `apt install` 命令安装 PostgreSQL 18 及其相关组件 4. **启动并启用服务**:使用 `systemctl start` 和 `systemctl enable` 命令管理 PostgreSQL 服务 5. **配置数据库**:设置 `postgres` 用户密码,创建测试数据库和用户 6. **验证安装**:检查 PostgreSQL 版本、服务状态和已创建的数据库 ## 学到的知识和命令 ### 基础命令 - `ssh -p <端口> <用户>@<服务器IP>`:通过 SSH 连接到远程服务器 - `scp -P <端口> <本地文件> <用户>@<服务器IP>:<目标路径>`:将本地文件上传到远程服务器 - `scp -P <端口> <用户>@<服务器IP>:<远程文件> <本地路径>`:将远程文件下载到本地 - `sudo -S <命令>`:通过管道传递密码执行 sudo 命令 - `systemctl status <服务名>`:查看服务状态 - `systemctl start <服务名>`:启动服务 - `systemctl enable <服务名>`:设置服务开机自启 ### PostgreSQL 相关命令 - `psql --version`:检查 PostgreSQL 版本 - `psql -U postgres -h localhost`:连接到 PostgreSQL 数据库 - `\l`:列出所有数据库 - `ALTER USER postgres WITH PASSWORD 'password';`:修改 postgres 用户密码 - `CREATE DATABASE test_db;`:创建测试数据库 - `CREATE USER test_user WITH ENCRYPTED PASSWORD 'test_password';`:创建测试用户 - `GRANT ALL PRIVILEGES ON DATABASE test_db TO test_user;`:授予用户权限 ### Bash 脚本编写技巧 - 使用 `exec > >(tee -a "$LOG_FILE") 2>&1` 将所有输出重定向到日志文件 - 使用 `if [ $? -ne 0 ]; then` 检查命令执行结果 - 使用 `$(command)` 捕获命令输出 - 使用 `2>/dev/null` 隐藏错误输出 ## 安全注意事项 1. **密码管理**:在脚本中硬编码密码存在安全风险,生产环境中应使用更安全的方式管理密码 2. **GPG 密钥验证**:临时禁用签名验证只适合测试环境,生产环境应确保密钥正确导入 3. **默认密码**:安装完成后应及时修改默认密码,避免安全风险 4. **最小权限原则**:创建数据库用户时应根据实际需求授予最小权限 ## 总结 通过本次 PostgreSQL 18 安装,我学习到了: 1. 如何在 Ubuntu 24.04 上安装和配置 PostgreSQL 18 2. 如何处理非交互式 SSH 会话中的 sudo 密码问题 3. 如何解决 GPG 密钥导入和验证问题 4. 如何编写可靠的 Bash 安装脚本 5. 如何管理和监控 PostgreSQL 服务 6. PostgreSQL 数据库的基本配置和使用 虽然在安装过程中遇到了一些问题,但通过不断尝试和学习,最终成功完成了 PostgreSQL 18 的安装和配置。这次安装经历让我对 PostgreSQL 和 Ubuntu 系统管理有了更深入的了解,也提高了我的问题解决能力。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 9:02:28

PostgreSQL 18 远程操作实战:从连接到备份的操作实践记录

PostgreSQL 18 远程操作实战&#xff1a;从连接到备份的完整指南 引言 作为一名开发者&#xff0c;掌握数据库的基本操作是必备技能之一。最近我在 Ubuntu 24.04 服务器上安装了 PostgreSQL 18&#xff0c;为了更好地理解和掌握 PostgreSQL 的日常管理和操作&#xff0c;我进…

作者头像 李华
网站建设 2026/9/21 16:09:27

S33-装一个Server2016+PCS7虚拟机

最近不知道哪股邪风吹过小编的头顶&#xff0c;陆续接到3个PCS7的项目&#xff0c;真是看小编头发还不够秃非得再薅掉几根的节奏。那么如题&#xff0c;闲话少说&#xff1b;跟上节奏&#xff0c;先来搭建一个编程环境。依然采用虚拟机的方式。1-准备虚拟机软件&#xff0c;2-准…

作者头像 李华
网站建设 2026/9/21 17:46:26

LobeChat能否部署在腾讯云CVM?国产云服务商适配教程

LobeChat 部署在腾讯云 CVM 的完整实践指南 在企业级 AI 应用加速落地的今天&#xff0c;越来越多开发者不再满足于使用公有云上的封闭聊天界面&#xff0c;而是希望构建一个可控、安全、可定制的私有化 AI 助手门户。开源项目 LobeChat 凭借其现代化的设计和强大的多模型支持…

作者头像 李华
网站建设 2026/9/23 3:25:13

本地使用ComfyUI运行Stable Diffusion 3.5

本地使用ComfyUI运行Stable Diffusion 3.5 你有没有遇到过这样的情况&#xff1a;想用最新的AI模型生成一张高质量图像&#xff0c;结果刚启动就弹出“显存不足”的提示&#xff1f;或者等待一张图生成要将近两分钟&#xff0c;交互体验大打折扣&#xff1f;随着 Stable Diffu…

作者头像 李华
网站建设 2026/9/21 23:18:54

力扣(LeetCode) 27: 移除元素 - 解法思路

问题概述 给定一个数组和一个值,原地删除所有等于该值的元素。返回不等于该值的元素数量。 解法 1:双指针(推荐) 工作原理 使用两个指针:一个(k)跟踪下一个非 val 元素的位置,另一个(i)遍历数组。将非 val 元素复制到前面: class Solution:def removeElement(s…

作者头像 李华
网站建设 2026/9/22 11:49:44

国内企业在泰国的三大机遇与四大挑战:玛雅出海东南亚的破局之道

在全球产业链重构与区域经济一体化加速的背景下&#xff0c;泰国凭借其独特的区位优势、政策红利和产业配套能力&#xff0c;正成为中国企业“出海”东南亚的核心枢纽。作为RCEP&#xff08;《区域全面经济伙伴关系协定》&#xff09;的重要成员国和“一带一路”倡议的关键节点…

作者头像 李华