2025 Centos 安装PostgreSQL

  1. 下载和安装
javascript 复制代码
# 确保目录存在
mkdir -p /usr/local/share/
cd /usr/local/share/

# 下载安装包 (版本看官网)
curl -# -O https://ftp.postgresql.org/pub/source/v15.7/postgresql-15.7.tar.bz2

# 2025yum源不可用!!!! 切换yum源,回车、回车 下一步
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)

# 下载编译所需依赖
yum -y install gcc make libicu-devel readline-devel zlib-devel openssl-devel libxml2-devel bzip2

# 解压源码包
tar jxvf postgresql-15.7.tar.bz2 -C /usr/local/share/

# 进入源码目录
cd /usr/local/share/postgresql-15.7

# 配置安装路径
./configure --prefix=/usr/local/share/postgresql-15.7

# 编译(可选加 -j 并行编译)
make

# 安装
sudo make install
  1. 配置相关环境变量和数据目录、日志目录、数据用户等
javascript 复制代码
# 创建专属用户 并设置密码:123456
useradd postgres

echo "123456" | passwd --stdin postgres

# 创建数据和日志目录
mkdir -p /usr/local/share/postgresql-15.7/{data,log}

# 绑定目录所属
chown -R postgres.postgres /usr/local/share/postgresql-15.7

# 保证系统可执行 (如果没有bin目录  mkdir -p /usr/local/bin/)
ln -s /usr/local/share/postgresql-15.7/bin/* /usr/local/bin


# 使用非root用户进行数据库初始化
su - postgres

/usr/local/share/postgresql-15.7/bin/initdb -D /usr/local/share/postgresql-15.7/data

# 编辑配置基础文件
vim /usr/local/share/postgresql-15.7/data/postgresql.conf

# -----------------------------------------------------------------------------
listen_addresses = '*'                                    # 监听所有网段 , 默认监听本机
port = 5432                                               # 监听的TCP端口号 , 默认值5432
max_connections = 100                                     # 最大连接数 , 默认值100
log_directory = '/usr/local/share/postgresql-15.7/log'    # log日志存放路径

# -----------------------------------------------------------------------------



# 编辑配置权限文件
vim /usr/local/share/postgresql-15.7/data/pg_hba.conf

# -----------------------------------------------------------------------------
# 表示那个用户 可以使用什么方式【本地(local)/远程(host)】访问 那个数据库,是否需要密码(trust不需要/md5需要)
# 如果是生产的 请使用类似下面的(CIDR表示法)区分网段

# host    sonar           sonar           192.168.208.10/24       trust


# 我这里为了方便 允许任意用户可连接
host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5

# -----------------------------------------------------------------------------



# 换回root用户进行环境变量配置(shell 脚本的运行需要使用变量)
exit
vim /etc/profile

# -----------------------------------------------------------------------------
export PGHOME=/usr/local/share/postgresql-15.7
export PGDATA=/usr/local/share/postgresql-15.7/data
export PGPORT=5432
export PGUSER=postgres
export PATH=$PATH:$PGHOME/bin

# -----------------------------------------------------------------------------


# 刷新环境变量
source /etc/profile




# ===============使用shell 配置systemd===============

cd /
vim postgresql_service.sh



# -----------------------------------------------------------------------------
#!/bin/bash
create_postgresql_service() {
    # 如果 PGUSER 或 PGDATA 未设置,使用默认值
    : ${PGUSER:=postgres}
    : ${PGDATA:=/usr/local/share/postgresql-15.7/data}

    cat > /usr/lib/systemd/system/postgresql.service <<-EOF
		[Unit]
		Description=PostgreSQL database server
		Documentation=https://www.postgresql.org/docs/15/index.html
		After=network.target

		[Service]
		User=$PGUSER
		Group=$PGUSER
		Type=forking
		ExecStart=/usr/local/share/postgresql-15.7/bin/pg_ctl -D $PGDATA start
		ExecStop=/usr/local/share/postgresql-15.7/bin/pg_ctl -D $PGDATA stop -m fast
		Restart=always
		TimeoutSec=300

		[Install]
		WantedBy=multi-user.target
	EOF
}
    
	
echo "PostgreSQL systemd service file created at /usr/lib/systemd/system/postgresql.service"

# 执行函数创建服务文件
create_postgresql_service

# 重新加载 systemd
systemctl daemon-reload

echo "Systemd configuration reloaded. You can now enable and start PostgreSQL:"
echo "启动服务:sudo systemctl start postgresql"
echo "开机自启:sudo systemctl enable postgresql"

# -----------------------------------------------------------------------------



# ===============启动PostgreSQL===============

# 赋予postgresql_service.sh 可执行权限
chmod -R 777 postgresql_service.sh

# 执行
sh postgresql_service.sh

# 启动
sudo systemctl start postgresql

# 开机自启
sudo systemctl enable postgresql


# ===============准备数据库及用户===============

# 进入pg命令控制台
psql

# 创建新用户
postgres=# CREATE ROLE sonar WITH LOGIN PASSWORD '123456';

# 创建名为sonar 数据库
postgres=# CREATE DATABASE sonar OWNER sonar;

# 授予数据库访问权限
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;

# 退出
postgres=# \q



# 创建专属数据库用户
useradd sonar
echo "123456" | passwd --stdin sonar

vim /etc/sudoers

# -----------------------------------------------------------------------------

sonar    ALL=(ALL)       ALL

# -----------------------------------------------------------------------------

补充:如果安装过程有出现错乱,可以考虑重新安装

javascript 复制代码
# 删除bin 目录
rm -rf /usr/local/share/postgresql-15.7/bin

# 清理目录 data/ 和log/的数据
rm -rf /usr/local/share/postgresql-15.7/data/*
rm -rf /usr/local/share/postgresql-15.7/log/*

# 清理编译文件

cd /usr/local/share/postgresql-15.7/
make clean

# 重复之前的安装操作完成安装。 如果是文件损坏,有必要重新下载安装包
相关推荐
寒水馨40 分钟前
Linux下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_linux.x86_64.zip)
linux·游戏引擎·godot·游戏开发·2d游戏·3d游戏·godot engine
念恒123061 小时前
Socket编程UDP(中)
linux·网络协议·udp
深耕运维十八载云架构实务1 小时前
系统故障玄学之内存明明显示空闲,服务器却频繁卡顿卡死?拆解被忽略的 Linux 隐性内存陷阱
linux
muddjsv1 小时前
SQLite与MySQL/PostgreSQL本质区别:运行模型、并发、部署、权限全方位对比
mysql·postgresql·sqlite
qetfw1 小时前
CentOS 7 搭建 Sendmail + Dovecot 邮件服务器:SMTP、POP3、IMAP 与 TLS
linux·centos
明日清晨2 小时前
printf(“%p\n“,&((struct A *)NULL)->m_float)的原理
linux·服务器·前端
Android系统攻城狮3 小时前
Linux PipeWire深度解析之pw_context_add_spa_lib调用流程与实战(二十九)
linux·运维·服务器·音频进阶·pipewire音频进阶
Dovis(誓平步青云)3 小时前
《如何在CentOS 7中添加Plex官方软件源:解决文件磁盘难管理难题》
linux·运维·服务器·后端·生成对抗网络·centos
草莓熊Lotso4 小时前
【Linux网络】深入理解Linux IO多路复用:select服务器完善、内核原理与poll实战
linux·运维·服务器·c语言·网络·c++
byte轻骑兵4 小时前
BlueZ源码编译环境配置全指南:Linux桌面原生编译 + 嵌入式ARM交叉编译 + 定制裁剪与调试实战
linux·arm开发·蓝牙·bluez·电脑蓝牙