当前位置: 首页 > news >正文

Ubuntu 24.04 安装 PostgreSQL

Ubuntu 24.04 安装 PostgreSQL

以下是 Ubuntu 24.04 安装 PostgreSQL 的详细步骤,包含官方源安装(推荐,稳定)、基础配置、验证测试及常见问题处理,适合新手快速上手:

一、优先选择:Ubuntu 官方仓库安装(稳定版)

Ubuntu 24.04 官方仓库已内置 PostgreSQL(通常是 16 或 17 版本,足够满足大多数场景),安装步骤最简单,无需额外添加第三方源。

1. 系统更新(避免依赖冲突)

首先更新系统包索引,确保安装最新依赖:

sudo apt update && sudo apt upgrade -y
2. 安装 PostgreSQL 及客户端

安装核心服务(postgresql)和命令行客户端(postgresql-client):

sudo apt install postgresql postgresql-client -y
  • 安装完成后,PostgreSQL 会自动:
    • 启动服务
    • 设置开机自启
    • 创建默认系统用户 postgres(数据库超级管理员)
    • 创建默认数据库 postgres

二、验证安装 & 基础操作

1. 检查服务状态

确认 PostgreSQL 服务已正常运行:

sudo systemctl status postgresql
  • 正常输出会显示 active (exited)active (running)(不同版本状态可能略有差异)。
  • 若未启动,手动启动:sudo systemctl start postgresql
  • 设置开机自启(默认已启用,可再次确认):sudo systemctl enable postgresql
2. 登录 PostgreSQL 数据库

PostgreSQL 默认采用 peer 认证(本地系统用户与数据库用户同名即可登录),无需密码。

方法 1:切换到 postgres 系统用户登录
# 切换到 postgres 系统用户(无密码,直接切换)
sudo -u postgres -i# 登录 PostgreSQL 数据库(此时已切换到 postgres 用户,直接输入 psql)
psql
方法 2:直接登录(无需切换用户)
sudo -u postgres psql

登录成功后,终端提示符会变为 postgres=#(表示当前在 postgres 数据库中,且为超级管理员权限)。

三、基础配置(必做)

默认配置下,postgres 用户无密码,且仅允许本地登录。建议做以下配置:

1. 为 postgres 超级用户设置密码

postgres=# 命令行中执行:

ALTER USER postgres WITH PASSWORD '你的强密码';  -- 替换为实际密码(建议包含大小写、数字、符号)

执行成功后,输出 ALTER ROLE

2. 退出数据库
\q  -- 退出 psql 命令行
exit  -- 退出 postgres 系统用户(若之前切换了用户)
3. (可选)允许远程访问

若需要从其他电脑连接该 PostgreSQL 服务,需修改 2 个配置文件:

步骤 1:修改监听地址(postgresql.conf
  1. 找到配置文件路径(Ubuntu 24.04 默认路径):
    sudo nano /etc/postgresql/16/main/postgresql.conf  -- 16 是版本号,若安装的是 17 则改为 17
    
  2. 找到 listen_addresses 配置项,默认是 localhost(仅本地监听),改为 *(监听所有网卡):
    listen_addresses = '*'  -- 去掉前面的 # 注释,值改为 *
    
  3. 保存退出:按 Ctrl+O → 回车 → Ctrl+X
步骤 2:修改访问控制(pg_hba.conf
  1. 编辑访问控制文件:
    sudo nano /etc/postgresql/16/main/pg_hba.conf
    
  2. 在文件末尾添加一行(允许所有 IP 以密码方式访问,生产环境建议限制具体 IP):
    # IPv4 访问
    host    all             all             0.0.0.0/0               scram-sha-256
    # IPv6 访问(可选)
    host    all             all             ::/0                    scram-sha-256
    
    • 说明:scram-sha-256 是 PostgreSQL 14+ 推荐的加密认证方式,兼容密码登录。
  3. 保存退出(Ctrl+O → 回车 → Ctrl+X)。
步骤 3:重启 PostgreSQL 服务生效
sudo systemctl restart postgresql
步骤 4:开放防火墙端口(若启用了 UFW)

PostgreSQL 默认端口是 5432,需允许外部访问:

sudo ufw allow 5432/tcp  -- 允许 TCP 5432 端口
sudo ufw reload  -- 重载防火墙规则

四、常用操作示例

1. 创建新数据库和用户
# 1. 登录 postgres 超级用户
sudo -u postgres psql# 2. 创建新用户(例如:user1,带密码)
CREATE USER user1 WITH PASSWORD 'user1的密码';# 3. 创建新数据库(例如:db1),并指定所有者为 user1
CREATE DATABASE db1 OWNER user1;# 4. 授予 user1 对 db1 的所有权限(可选)
GRANT ALL PRIVILEGES ON DATABASE db1 TO user1;# 5. 退出
\q
2. 用新用户登录数据库
# 本地登录(需先创建同名系统用户,或修改认证方式为密码)
psql -U user1 -d db1 -h localhost# 远程登录(需配置远程访问后)
psql -U user1 -d db1 -h 服务器IP地址 -p 5432
3. 查看数据库列表
\l  -- 在 psql 命令行中执行,列出所有数据库
4. 切换数据库
\c db1  -- 切换到 db1 数据库

五、卸载 PostgreSQL(可选)

若需卸载,执行以下命令(彻底删除服务和数据):

# 停止服务
sudo systemctl stop postgresql# 卸载软件包
sudo apt purge postgresql postgresql-client -y# 删除残留配置和数据(谨慎!会删除所有数据库)
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/lib/postgresql/
sudo userdel -r postgres  # 删除 postgres 系统用户

六、常见问题排查

  1. 登录报错:Peer authentication failed for user "postgres"
    原因:本地认证方式为 peer(需系统用户与数据库用户同名),解决方案:
    编辑 pg_hba.conf,将 local all all peer 改为 local all all md5(密码认证),然后重启服务:

    sudo nano /etc/postgresql/16/main/pg_hba.conf
    # 修改后重启
    sudo systemctl restart postgresql
    
  2. 远程连接失败:could not connect to server: Connection refused
    检查 3 点:

    • 服务是否监听所有地址(listen_addresses = '*'
    • pg_hba.conf 是否允许远程 IP 访问
    • 服务器防火墙是否开放 5432 端口(sudo ufw status 查看)
  3. 忘记 postgres 密码
    重置步骤:

    1. 停止服务:sudo systemctl stop postgresql
    2. 无密码启动:sudo -u postgres postgres --single -D /var/lib/postgresql/16/main/
    3. 在启动后的命令行中执行:ALTER USER postgres WITH PASSWORD '新密码';
    4. Ctrl+D 退出,重启服务:sudo systemctl start postgresql

通过以上步骤,即可在 Ubuntu 24.04 上完成 PostgreSQL 的安装、配置和基础使用。

如果需要安装最新版本(如 PostgreSQL 17/18),可参考 PostgreSQL 官方文档 添加官方源后安装。

http://www.dtcms.com/a/604930.html

相关文章:

  • 数据科学每日总结--Day18--数据库
  • 【ZeroRange WebRTC】WebRTC 基于 STUN 的 srflx 直连原理与实现
  • neovim等模态编辑器最优雅的输入法解决方案
  • FaceBook叫板OpenAI!开源 Omnilingual ASR:支持1600多种语言的开源多语言语音识别
  • 分享一个MySQL万能备份脚本
  • 大模型数据洞察能力方法调研
  • 32位MCU芯片国产品牌(32系列单片机常用型号有哪些)
  • 网站底部留言代码赤峰建设淘宝网站
  • 方特网站是谁做的照片做视频的网站
  • Java 9 新特性详解
  • Spring boot 3.3.1 官方文档 中文
  • Sora 2——开启 AI 视频创作新时代
  • 异世界网络:BGP联邦的建立
  • PHP客户端调用由Go服务端GRPC接口
  • Java 开发 - 粘包处理器 - 基于消息头 + 消息体
  • dify零基础入门示例
  • 跨语言智能再升级!Multi-LMentry 打造多语理解新基准;Nemotron-Personas-USA重塑虚拟人画像生成
  • 门户网站建设项目书免费拒绝收费网站
  • 研发管理知识库(13)阿里云的DevOps工具介绍
  • WPF 使用UserControl / ContentControl显示子界面
  • Docker 的底层工作原理
  • 互联网门户网站是什么意思网站建设 源美设计
  • 重庆商业网站有哪些产品网站建设方案
  • C基础学习过程02
  • 视频矩阵哪个品牌好 十大视频矩阵品牌
  • 电子书《21天学通Java(第5版)》
  • maven 私服上传jar
  • 从自动驾驶到智能辅导:人工智能如何重塑商业与生活
  • Hadess入门到精通 - 如何管理通用Generic制品
  • 万物互联时代,如何选择合适的时序数据库?