PostgreSQL编译安装
Eave
2025.11.13
1、相关依赖安装
yum install -y libicu-devel flex readline-devel perl-CPAN libuuid-devel python3-devel
yum install -y readline-devel zlib-devel flex bison libxml2-devel libxslt-devel openssl-devel pam-devel libedit-devel selinux-policy-devel systemd-devel
2、下载PostgreSQL
下载地址:https://www.postgresql.org/ftp/source
wget "https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz"
3、编译安装
tar -zxf postgresql-18.1.tar.gz
cd postgresql-18.1/
./configure --prefix=/usr/local/postgres --with-openssl --with-libxml --with-libxslt --with-icu --with-pam --with-systemd --with-ssl=openssl --with-uuid=e2fs --with-perl
make -j$(nproc) && make install
4、初始化PostgreSQL数据目录
创建PostgreSQL启动用户
useradd -r -s /sbin/nologin postgres
创建数据目录
mkdir -p /var/lib/postgres/data
chown -R postgres:postgres /var/lib/postgres
创建日志目录
mkdir -p /var/log/postgres
chown -R postgres:postgres /var/log/postgres
以postgres用户身份初始化数据库集群
sudo -u postgres /usr/local/postgres/bin/initdb -D /var/lib/postgres/data
5、创建启动服务文件
编辑/usr/lib/systemd/system/postgres.service
[Unit]
Description=PostgreSQL Database Server
After=syslog.target
After=network.target
Requires=network.target
[Service]
Type=forking
# 根据实际安装路径调整以下参数
User=postgres
Group=postgres
# 主程序路径
ExecStart=/usr/local/postgres/bin/pg_ctl start -D /var/lib/postgres/data
ExecStop=/usr/local/postgres/bin/pg_ctl stop -D /var/lib/postgres/data -m fast
ExecReload=/usr/local/postgres/bin/pg_ctl reload -D /var/lib/postgres/data
# 重启策略
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
启动PostgreSQL
systemctl start postgres
6、设置开机启动
systemctl enable postgres
systemctl daemon-reload
7、修改配置
修改以下配置/var/lib/postgres/data/postgresql.conf
# Unix socket 配置
unix_socket_directories = '/dev/shm' # 使用内存文件系统
unix_socket_permissions = 0777 # socket 文件权限
unix_socket_group = '' # socket 组(空表示默认)
# 日志记录配置
logging_collector = on # 启用日志收集器
log_directory = '/var/log/postgres' # 日志目录,相对于数据目录或者绝对路径
log_filename = 'postgres-%Y%m%d.log' # 日志文件名格式
log_rotation_age = 30d # 日志文件保留时间
log_line_prefix = '%m [%p] %q%u@%d ' # 日志行前缀格式
log_timezone = 'Asia/Hong_Kong' # 日志时区
# 日志级别控制
log_min_messages = warning # 只记录 warning 及以上级别
log_min_error_statement = error # 只记录错误语句
log_min_duration_statement = 1000 # 只记录慢查询(>1秒)
修改密码加密方式/var/lib/postgres/data/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
8、加入环境变量
编辑/etc/profile文件
在/etc/profile文件末尾追加一下内容
# postgres
export PATH=$PATH:/usr/local/postgres/bin
执行一下命令使配置生效
source /etc/profile
9、修改密码
进入PostgreSQL终端
psql -h localhost -U postgres
# 修改当前用户的密码
ALTER USER current_user WITH PASSWORD '123456';
# 修改指定用户的密码
ALTER USER username WITH PASSWORD '123456';
# 查看用户信息和密码
SELECT rolname, rolpassword FROM pg_authid;