news 2026/4/17 23:07:08

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/4/18 7:41:13

基于STM32单片机直流电压表电流表功率高精度过压过流蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S360

STM32-S360-高精度电压(0.01V)电流(0.01A)功率多接口过压过流过载声光提醒OLED屏阈值按键(无线方式选择)产品功能描述&#xff1a;本系统由STM32F103C8T6单片机核心板、OLED屏、&#xff08;无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选&#xff09;、DC测试口、被测电…

作者头像 李华
网站建设 2026/4/18 7:05:17

基于STM32单片机快递柜储物柜扫码GSM短信灯光消毒蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S370

STM32-S370-存取柜GSM短信光敏灯光消毒取件码二维码语音播报存件手机号录入后台数据4舵机OLED屏按键(无线方式选择)产品功能描述&#xff1a;本系统由STM32F103C8T6单片机核心板、OLED屏、&#xff08;无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选&#xff09;、键盘部…

作者头像 李华
网站建设 2026/4/17 12:09:54

渗透实战 | HTB Bastion靶场入门必备:从SMB到MRemoteNG的提权之路

介绍 Bastion 是一个简单级 Windows 盒子&#xff0c;内置一个 VHD&#xff08;虚拟硬盘&#xff09;镜像&#xff0c;可以提取凭证。登录后&#xff0c;发现安装了MRemoteNG软件&#xff0c;该软件不安全存储密码&#xff0c;可以提取凭证。 url:https://app.hackthebox.com…

作者头像 李华
网站建设 2026/4/17 14:50:37

Langflow:拖拽式AI工作流,重塑编程体验

Langflow&#xff1a;用图形化方式重塑 AI 编程体验 在大模型应用开发的前线&#xff0c;一个现实问题正日益凸显&#xff1a;即便有了 LangChain 这样强大的框架&#xff0c;构建一个多步骤、带记忆、能调用工具的智能体&#xff0c;依然需要写大量样板代码。开发者常常陷入组…

作者头像 李华
网站建设 2026/4/18 3:09:11

LobeChat能否支持WebSocket?实时通信协议测试

LobeChat能否支持WebSocket&#xff1f;实时通信协议测试 在构建现代AI聊天应用时&#xff0c;一个核心挑战是如何让用户“看见”模型思考的过程——不是等待几秒后突然弹出整段回复&#xff0c;而是像有人打字一样&#xff0c;逐字浮现。这种体验的背后&#xff0c;离不开高效…

作者头像 李华
网站建设 2026/4/17 22:34:08

虚拟机vmware linux的piix4_smbus : SMBus Host Controller not enabled

发生原因&#xff1a;虚拟机内存不足了&#xff0c;无法正常启动 解决措施: 进入命令行模式&#xff0c;删除部分内容后重新启动 实操&#xff1a; 按住shift重新启动&#xff1a; 选择“Advanced options for Ubuntu” 选择“… (recovery mode)”这项&#xff1a; 选择“…

作者头像 李华