下面以 CentOS 7 / CentOS 8 为例,给你一套从零部署 PostgreSQL 的完整流程,包括 yum 安装、初始化、远程访问、防火墙、基本使用,适用于绝大多数生产环境。
常见版本:
下面以 PostgreSQL 14 为例。
# CentOS 7
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# CentOS 8
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql14-server postgresql14-contrib
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
初始化完成后,数据目录通常在:
/var/lib/pgsql/14/data
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
查看状态:
systemctl status postgresql-14
postgresql.confsudo vi /var/lib/pgsql/14/data/postgresql.conf
修改:
listen_addresses = '*'
pg_hba.confsudo vi /var/lib/pgsql/14/data/pg_hba.conf
末尾添加:
# 允许所有 IP 使用 md5 密码登录
host all all 0.0.0.0/0 md5
⚠️ 生产环境建议限制 IP 段,例如
192.168.1.0/24
sudo systemctl restart postgresql-14
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
sudo -i -u postgres
psql
-- 创建用户
CREATE USER myuser WITH PASSWORD 'mypassword';
-- 创建数据库
CREATE DATABASE mydb OWNER myuser;
-- 授权
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
退出:
\q
psql -h 127.0.0.1 -U myuser -d mydb
psql -h <服务器IP> -U myuser -d mydb
| 功能 | 命令 |
|---|---|
| 启动 | systemctl start postgresql-14 |
| 停止 | systemctl stop postgresql-14 |
| 重启 | systemctl restart postgresql-14 |
| 状态 | systemctl status postgresql-14 |
| 登录 | psql -U user -d db |
| 查看数据库 | \l |
| 查看表 | \dt |
listen_addressespg_hba.confPostgreSQL 默认 禁止密码登录 root 必须使用:
su - postgres
yum install postgresql14-server
postgresql-14-setup initdb
systemctl enable --now postgresql-14
vim /var/lib/pgsql/14/data/postgresql.conf
vim /var/lib/pgsql/14/data/pg_hba.conf
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
如果你需要:
可以直接告诉我 ✅