PostgreSQL 快速安装脚本适用于-kylin10-x86_64
# 一、准备环境 KylinV10
Kylin V10 默认提供 PostgreSQL 版本,但各厂商镜像差异较大,不同 CPU 架构(龙芯、飞腾、兆芯、海光)均保持一致的 rpm 包命名方式。本指导统一基于 系统自带软件仓库,避免自行添加第三方源导致的不兼容。
默认用户:postgres 默认数据库:postgres 默认密码:postgres_pwd查看系统架构
uname -a
cat /etc/.ky10arch
1
2
2
# 二、PostgreSQL 安装步骤
# 2.1 使用系统软件仓库安装
Kylin V10 不推荐外接 PGDG(阿里云)源,因此直接从官方源安装即可。
yum clean all && yum makecache
yum install -y postgresql postgresql-server postgresql-contrib
1
2
2
安装完成后,将会生成以下关键文件:
| 文件路径 | 用途 |
|---|---|
/usr/bin/postgres | PostgreSQL 运行主程序 |
/usr/bin/psql | 客户端工具 |
/var/lib/pgsql/data | 默认数据目录(初始化后生成) |
# 2.2 初始化数据库
Kylin V10 使用 postgresql-setup 工具初始化数据目录:
postgresql-setup --initdb --unit postgresql
1
初始化完成后,目录结构如下:
/var/lib/pgsql/data/
├── postgresql.conf
├── pg_hba.conf
├── base/
└── pg_wal/
1
2
3
4
5
2
3
4
5
提示
如需自定义数据目录,可在初始化前修改 /etc/sysconfig/pgsql/postgresql 中的 PGDATA。
# 三、服务启动与访问授权
# 3.1 启动 PostgreSQL 并设置开机自启
systemctl enable postgresql
systemctl start postgresql
systemctl status postgresql
1
2
3
2
3
# 3.2 配置监听地址与远程访问
# 修改监听
sed -i "s/^#listen_addresses.*/listen_addresses = '*'/" /var/lib/pgsql/data/postgresql.conf
1
# 设置访问控制(pg_hba.conf)
echo "host all all 0.0.0.0/0 md5" >> /var/lib/pgsql/data/pg_hba.conf
1
安全提醒
0.0.0.0/0 仅用于内网环境。生产环境请仅允许运维网段。
# 3.3 重启服务使配置生效
systemctl restart postgresql
1
# 四、设置默认 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres_pwd';"
1
提示
CloudBeaver、Ambari、Superset 等系统均可直接使用该账户连接。
# 五、一键部署脚本(Kylin V10 适配版)
你可以使用以下脚本自动完成 PostgreSQL 安装和配置:
#!/usr/bin/env bash
set -euo pipefail
# ===== 固定配置 =====
PG_PASSWORD="postgres_pwd" # 固定密码
ALLOW_CIDR="0.0.0.0/0" # 允许远程访问网段
LISTEN_ADDR="*" # 监听地址
PG_SERVICE="postgresql"
PG_DATA_DIR="/var/lib/pgsql/data"
# =====================
echo "=== [1/10] 停止旧服务(如存在) ==="
systemctl stop "${PG_SERVICE}" 2>/dev/null || true
echo "=== [2/10] 卸载旧版 PostgreSQL ==="
if command -v dnf >/dev/null 2>&1; then
PKG=dnf
elif command -v yum >/dev/null 2>&1; then
PKG=yum
else
echo "❌ 未发现 dnf/yum,脚本仅适用于 Kylin V10(RPM 系)" >&2
exit 1
fi
$PKG remove -y postgresql postgresql-server postgresql-contrib postgresql-libs || true
echo "=== [3/10] 清理旧数据目录 ==="
rm -rf "${PG_DATA_DIR}" /var/lib/pgsql /var/run/postgresql /etc/postgresql /etc/systemd/system/${PG_SERVICE}.service || true
mkdir -p "${PG_DATA_DIR}"
chown -R postgres:postgres /var/lib/pgsql || true
echo "=== [4/10] 安装 Kylin 官方 PostgreSQL(系统源) ==="
$PKG install -y postgresql postgresql-server postgresql-contrib
echo "=== [5/10] 初始化数据库 ==="
postgresql-setup --initdb --unit "${PG_SERVICE}"
echo "=== [6/10] 修改配置:监听与认证 ==="
CONF="${PG_DATA_DIR}/postgresql.conf"
HBA="${PG_DATA_DIR}/pg_hba.conf"
# 修改监听地址
if grep -q "^[#]*listen_addresses" "$CONF"; then
sed -i "s/^[#]*listen_addresses.*/listen_addresses = '${LISTEN_ADDR}'/" "$CONF"
else
echo "listen_addresses = '${LISTEN_ADDR}'" >>"$CONF"
fi
# 修改认证方式为 md5(保证用户名密码能登录)
cp -a "$HBA" "${HBA}.bak.$(date +%F-%H%M)"
sed -ri "s/^(local[[:space:]]+all[[:space:]]+all[[:space:]]+).*/\1md5/" "$HBA"
sed -ri "s/^(host[[:space:]]+all[[:space:]]+all[[:space:]]+127\.0\.0\.1\/32[[:space:]]+).*/\1md5/" "$HBA"
sed -ri "s/^(host[[:space:]]+all[[:space:]]+all[[:space:]]+::1\/128[[:space:]]+).*/\1md5/" "$HBA"
grep -q "host all all ${ALLOW_CIDR} md5" "$HBA" || echo "host all all ${ALLOW_CIDR} md5" >>"$HBA"
command -v restorecon >/dev/null 2>&1 && restorecon -R /var/lib/pgsql || true
echo "=== [7/10] 启动服务并设置开机自启 ==="
systemctl enable "${PG_SERVICE}"
systemctl start "${PG_SERVICE}"
echo "=== [8/10] 临时放开本地认证以重置密码 ==="
if ! grep -q "local all postgres trust" "$HBA"; then
echo "local all postgres trust" | sed -i '1i\'"$(
echo 'local all postgres trust'
)" "$HBA"
fi
systemctl reload "${PG_SERVICE}"
echo "=== [9/10] 设置 postgres 密码 ==="
sudo -iu postgres psql -tAc "ALTER USER postgres WITH PASSWORD '${PG_PASSWORD}';" >/dev/null 2>&1 || true
# 恢复 md5 认证
sudo sed -i '/local all postgres trust/d' "$HBA"
systemctl reload "${PG_SERVICE}"
echo "=== [10/10] 开放防火墙端口 5432 ==="
if command -v firewall-cmd >/dev/null 2>&1; then
firewall-cmd --add-service=postgresql --permanent || firewall-cmd --add-port=5432/tcp --permanent || true
firewall-cmd --reload || true
fi
echo ""
echo "✅ PostgreSQL 已成功安装并可使用用户名密码连接"
echo "-------------------------------------------"
echo " - 服务名: ${PG_SERVICE}"
echo " - 数据目录: ${PG_DATA_DIR}"
echo " - 监听: ${LISTEN_ADDR}:5432"
echo " - 允许网段: ${ALLOW_CIDR}"
echo " - 用户: postgres"
echo " - 密码: ${PG_PASSWORD}"
echo "-------------------------------------------"
echo ""
echo "▶ 测试命令(本机):"
echo " psql -U postgres -h 127.0.0.1 -p 5432 -W"
echo "▶ 测试命令(远程):"
echo " psql -U postgres -h <服务器IP> -p 5432 -W"
echo ""
echo "输入密码:postgres_pwd,即可连接。"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99