跳到主要内容PostgreSQL 18 默认密码修改与安全加固指南 | 极客日志SQL
PostgreSQL 18 默认密码修改与安全加固指南
PostgreSQL 18 默认密码修改指南涵盖初始状态说明、三种修改方法(本地直接修改、sudo 执行、脚本批量修改)、验证方式及安全加固建议。内容包括配置 pg_hba.conf 限制访问、启用 scram-sha-256 加密、定期更换密码及使用密码管理器。同时提供忘记密码恢复及远程连接失败的解决方案。旨在帮助管理员建立完善的数据库安全管理制度,保护数据资产安全。
城市逃兵1 浏览 PostgreSQL 18 默认密码修改与安全加固指南
引言
数据库安全是企业和开发者不可忽视的重要环节,而默认密码往往是数据库安全的第一道防线。PostgreSQL 作为一款广泛使用的开源关系型数据库,其默认密码设置和修改方法是每个数据库管理员和开发者必须掌握的基础知识。本文将以 PostgreSQL 18 为例,详细介绍默认密码的情况、修改方法以及安全加固建议。
一、PostgreSQL 18 默认密码背景
1. 初始默认状态
在 Ubuntu 系统中,PostgreSQL 18 安装完成后:
默认的 postgres 数据库用户初始无密码,采用操作系统认证(peer 或 ident 模式)本地连接时,只需切换到 postgres 系统用户即可直接登录,无需密码2. 安装脚本默认密码
部分自动化安装脚本在安装过程中会主动设置默认密码:
- 示例默认密码:
your_secure_password
- 设置命令:
ALTER USER postgres WITH PASSWORD 'your_secure_password';
⚠️ 安全警示:这个默认密码仅用于演示,生产环境必须立即修改,否则存在严重安全风险!
二、修改默认密码的详细步骤
方法 1:本地直接修改(推荐)
这种方法适用于可以直接访问服务器的场景,步骤如下:
ALTER USER postgres WITH PASSWORD '您的强密码';
建议密码包含:大小写字母、数字、特殊字符,长度至少 12 位
方法 2:通过 sudo 直接执行命令
如果不想切换用户,可以使用 sudo 直接执行命令:
echo "ALTER USER postgres WITH PASSWORD '您的强密码';" | sudo -u postgres psql
sudo -u postgres psql <<EOF
ALTER USER postgres WITH PASSWORD '您的强密码';
EOF
方法 3:使用脚本批量修改(适合远程操作)
对于远程服务器或需要批量操作的场景,可以使用脚本方式修改密码,避免复杂的引号嵌套问题:
scp -P <端口号> change_pg_password.sh <用户名>@<服务器 IP 地址>:~
ssh -t -p <端口号> <用户名>@<服务器 IP 地址> "bash ~/change_pg_password.sh"
bash change_pg_password.sh
chmod +x change_pg_password.sh
创建脚本文件 change_pg_password.sh:
#!/bin/bash
SUDO_PASSWORD="<您的 sudo 密码>"
NEW_PG_PASSWORD="<您的新密码>"
echo "$SUDO_PASSWORD" | sudo -S -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$NEW_PG_PASSWORD'"
echo "Password changed successfully!"
这种方法特别适合在 PowerShell 等复杂引号环境下执行远程操作,避免了引号嵌套的困扰。
三、验证密码修改是否成功
修改密码后,我们需要验证修改是否生效,可以通过以下方法:
方法 1:本地密码连接测试
psql -U postgres -h localhost -W
PGPASSWORD='您的新密码' psql -U postgres -h localhost -c 'SELECT version();'
方法 2:远程连接测试
如果需要远程连接,确保已配置好 pg_hba.conf 允许密码认证,然后使用:
psql -U postgres -h <服务器 IP> -p 5432 -W
方法 3:查看用户密码状态
sudo -u postgres psql -c "SELECT usename, passwd FROM pg_shadow WHERE usename = 'postgres';"
注意:PostgreSQL 会对密码进行哈希处理,无法直接查看明文密码,只能确认用户存在且密码已设置
四、密码修改后的安全加固建议
1. 配置 pg_hba.conf,限制访问权限
编辑 pg_hba.conf 文件,根据实际需求调整认证方式:
sudo nano /etc/postgresql/18/main/pg_hba.conf
- 本地连接使用 peer 认证
- 远程连接使用 md5 或 scram-sha-256 密码认证
- 限制允许连接的 IP 地址范围
2. 启用强密码策略
在 postgresql.conf 中配置密码策略:
# 启用密码复杂度检查
password_encryption = scram-sha-256
# 设置密码有效期
# password_valid_until = '2025-12-31'
3. 定期更换密码
建立定期密码更换机制,建议每 3-6 个月更换一次数据库密码。
4. 使用密码管理器
对于复杂的强密码,建议使用专业的密码管理器(如 1Password、Bitwarden)进行管理,避免密码丢失或泄露。
五、常见问题与解决方案
问题 1:忘记 postgres 用户密码怎么办?
sudo systemctl stop postgresql@18-main
sudo -u postgres postgres --single -D /var/lib/postgresql/18/main
ALTER USER postgres WITH PASSWORD '新密码';
sudo systemctl start postgresql@18-main
问题 2:远程连接提示 "password authentication failed"?
- 检查
pg_hba.conf 是否允许远程 IP 访问
- 确认密码输入正确
- 检查
postgresql.conf 中 listen_addresses 是否设置为 '*'
六、总结
PostgreSQL 18 默认密码的修改是数据库安全加固的基础步骤,通过本文的详细指南,您应该已经掌握了:
- PostgreSQL 18 默认密码的背景情况
- 两种修改默认密码的方法(本地直接修改和 sudo 命令修改)
- 如何验证密码修改是否成功
- 密码修改后的安全加固建议
- 常见问题的解决方案
请务必重视数据库默认密码的修改和管理,建立完善的数据库安全管理制度,保护您的数据资产安全。
参考资源
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- SQL 美化和格式化
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
- SQL 转 CSV/JSON/XML
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL 转 CSV/JSON/XML在线工具,online
- CSV 工具包
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online