下面给你一份**在 CentOS 上安装并配置 PostgreSQL(以 CentOS 7/8 为例)**的完整流程,适合新手和常用生产环境。
sudo yum install -y postgresql-server postgresql-contrib
初始化数据库:
sudo postgresql-setup initdb
启动并设置开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
以 PostgreSQL 15 为例:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql15-server postgresql15-contrib
初始化:
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
启动:
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15
sudo -i -u postgres
进入数据库:
psql
ALTER USER postgres PASSWORD 'your_password';
退出:
\q
postgresql.confsudo vim /var/lib/pgsql/15/data/postgresql.conf
修改或取消注释:
listen_addresses = '*'
pg_hba.confsudo vim /var/lib/pgsql/15/data/pg_hba.conf
末尾添加:
# IPv4 remote access
host all all 0.0.0.0/0 md5
⚠️ 生产环境建议限制 IP,如
192.168.1.0/24
sudo systemctl restart postgresql-15
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
sudo -i -u postgres
psql
CREATE DATABASE mydb;
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
psql -h 127.0.0.1 -U myuser -d mydb
psql -h 服务器IP -U myuser -d mydb
原因:pg_hba.conf 默认使用 ident
✅ 改为 md5
✅ 检查:
listen_addressespg_hba.confsetenforce 0
yum install postgresql-server
postgresql-setup initdb
systemctl enable --now postgresql
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
如果你用的是 CentOS 7 / 8 / Stream 或想配置 主从复制 / 高可用 / 性能优化,告诉我具体版本和用途,我可以给你定制一份配置方案。