news 2026/6/9 19:13:34

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/6/9 18:53:22

基于STM32单片机快递柜外卖柜扫码取件语音播报蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S368

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

作者头像 李华
网站建设 2026/6/10 10:45:00

Miniconda配置PyTorch避坑指南:版本兼容与DLL加载问题

Miniconda配置PyTorch避坑指南&#xff1a;版本兼容与DLL加载问题 在搭建深度学习开发环境时&#xff0c;你有没有遇到过这样的场景&#xff1f;明明按照官方命令安装了 PyTorch&#xff0c;却在 import torch 时突然报错&#xff1a; ImportError: numpy.ndarray size change…

作者头像 李华
网站建设 2026/6/10 11:40:33

嵌入式模组拨号成功后,与其连接的上位机的网卡获取了IP地址,然后上位机可以通过这个网卡上网,ping百度,做数据业务。如果此时上位机的网卡ping不通百度,需要看什么日志呢?

1、先检查模组是否拨号成功&#xff1f;若拨号成功继续下一步&#xff0c;若拨号失败检查拨号日志。2、检查PDP上下文是否激活&#xff1f;网络注册是否成功&#xff1f;拨号成功不代表数据业务激活比如ATCGACT?检查PDP上下文是否激活比如ATCGREG?检查网络注册状态比如ATCSQ检…

作者头像 李华
网站建设 2026/6/10 11:42:17

Stable Diffusion 3.5-FP8环境配置全攻略

Stable Diffusion 3.5-FP8 环境配置实战指南 在尝试部署 stable-diffusion-3.5-fp8 的时候&#xff0c;你是不是也遇到过这样的场景&#xff1a;明明是专为效率优化的 FP8 版本&#xff0c;结果加载时却比原版更卡&#xff1f;显存溢出、依赖报错、模型文件只有几 KB——这些问…

作者头像 李华
网站建设 2026/6/9 20:04:44

LobeChat能否运行在树莓派?低成本硬件适配

LobeChat能否运行在树莓派&#xff1f;低成本硬件适配 在智能家居设备日益复杂的今天&#xff0c;越来越多开发者开始思考&#xff1a;我们是否真的需要依赖云端大模型来实现一个智能对话系统&#xff1f;有没有可能用一块几十美元的开发板&#xff0c;比如树莓派&#xff0c;搭…

作者头像 李华
网站建设 2026/6/10 2:05:50

LobeChat移动端适配情况如何?手机浏览体验报告

LobeChat移动端体验深度解析&#xff1a;当AI聊天界面遇上手机浏览器 在通勤地铁上打开浏览器&#xff0c;想让AI帮你草拟一封邮件&#xff1b;会议间隙掏出手机&#xff0c;希望立刻总结刚才的讨论要点——这些场景早已成为现代数字生活的常态。用户不再满足于在电脑前才能与大…

作者头像 李华