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)
- 找到配置文件路径(Ubuntu 24.04 默认路径):
sudo nano /etc/postgresql/16/main/postgresql.conf -- 16 是版本号,若安装的是 17 则改为 17 - 找到
listen_addresses配置项,默认是localhost(仅本地监听),改为*(监听所有网卡):listen_addresses = '*' -- 去掉前面的 # 注释,值改为 * - 保存退出:按
Ctrl+O→ 回车 →Ctrl+X。
步骤 2:修改访问控制(pg_hba.conf)
- 编辑访问控制文件:
sudo nano /etc/postgresql/16/main/pg_hba.conf - 在文件末尾添加一行(允许所有 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+ 推荐的加密认证方式,兼容密码登录。
- 说明:
- 保存退出(
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 系统用户
六、常见问题排查
-
登录报错:
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 -
远程连接失败:
could not connect to server: Connection refused
检查 3 点:- 服务是否监听所有地址(
listen_addresses = '*') pg_hba.conf是否允许远程 IP 访问- 服务器防火墙是否开放 5432 端口(
sudo ufw status查看)
- 服务是否监听所有地址(
-
忘记
postgres密码
重置步骤:- 停止服务:
sudo systemctl stop postgresql - 无密码启动:
sudo -u postgres postgres --single -D /var/lib/postgresql/16/main/ - 在启动后的命令行中执行:
ALTER USER postgres WITH PASSWORD '新密码'; - 按
Ctrl+D退出,重启服务:sudo systemctl start postgresql
- 停止服务:
通过以上步骤,即可在 Ubuntu 24.04 上完成 PostgreSQL 的安装、配置和基础使用。
如果需要安装最新版本(如 PostgreSQL 17/18),可参考 PostgreSQL 官方文档 添加官方源后安装。
