Linux系统安装PostgresSQL数据库
因国产化改造需求,很多项目会选择使用以PostgresSQL为基础的国产化替代产品。PostgresSQL是开源关系型数据库,因为其稳定和安全性,以及丰富的数据类型和扩展可以使用,在企业新项目开发中会优先选择使用。下面记录一下PostgresSQL数据库的安装过程供参考
一、PostgresSQL下载
官方网站:https://www.postgresql.org/
打开PostgreSQL官网,点击下载按钮:
可以根据系统选择对应的版本下载,因为我们是使用源码安装,所以这里选择下载源码:
选择版本,这里我们选择17.7版本:
点击postgresql-17.7.tar.gz进行源码下载:
如果服务器可以连接公网的话,可以选择在服务器上直接使用wget下载源码,在文件上单机鼠标右键获取源码链接地址:
wget https://ftp.postgresql.org/pub/source/v17.7/postgresql-17.7.tar.gz
二、编译安装PostgresSQL
1.创建用户
出于安全考虑,一般情况下PostgresSQL数据库不允许运行在root用户下,所以我们先来创建一个普通用户postgres:
#创建应用目录
mkdir /app
#创建用户组
groupadd -g 1101 postgres
#创建用户并指定用户目录
useradd -u 1101 -g postgres -d /app/postgres -c "postgres." -m -s /bin/bash postgres
2.安装依赖包
yum install -y gcc gcc-c++ libicu-devel bison flex readline-devel zlib-devel
注意这里依赖包可能不全,如果有遗漏的依赖,在编译检查的时候会有提示,需要按照提示安装后再进行编译
3.下载解压PostgresSQL
wget https://ftp.postgresql.org/pub/source/v17.7/postgresql-17.7.tar.gz
tar -zxvf postgresql-17.7.tar.gz
4.配置编译项目
cd postgresql-17.7
./configure --prefix=/app/postgres/pgsql

5.编译安装
make && make install

6.设置用户目录权限
chown -R postgres:postgres /app/postgres
chmod -R 755 /app/postgres
7.设置环境变量
sed -i '$a PGHOME=/app/postgres/pgsql' /etc/profile
sed -i '$a export PATH=$PATH:$PGHOME/bin' /etc/profile
source /etc/profile
三、修改配置文件
1.切换到postgres用户
su - postgres
2.创建数据与日志目录
mkdir -p /app/postgres/pgsql/data
mkdir -p /app/postgres/pgsql/log
3.初始化数据目录
initdb /app/postgres/pgsql/data

4.修改postgresql.conf文件
vi /app/postgres/pgsql/data/postgresql.conf
找到以下行取消注释,并修改参数值:
listen_addresses = '*' #允许远程连接
port = 5432 #默认端口
max_connections = 1000 #最大连接数
logging_collector = on #启用日志
log_directory = '/app/postgres/pgsql/log' #调整日志目录
tcp_keepalives_idle = 30
tcp_keepalives_interval = 5 -- 这里≤5 s
tcp_keepalives_count = 3

5.修改pg_hba.conf文件
vi /app/postgres/pgsql/data/pg_hba.conf
添加以下行允许所有ip访问:
host all all 0.0.0.0/0 md5
host all all ::/0 md5

四、启动数据库
1.启动数据库
pg_ctl start -D /app/postgres/pgsql/data -l /app/postgres/pgsql/log/start.log

2.修改数据库密码
使用psql命令进入pg命令行环境,输入\password修改密码:
这里PostgresSQL数据库就安装完成了。
五、psql命令行常用命令
\l:列出所有数据库
\c:切换数据库
\d:列出当前库中所有表、视图、序列
\dn:列出所有schema
\du:列出所有用户
\i:执行sql脚本
\q:退出psql命令行
参考文档:https://www.postgresql.org/docs/current/install-make.htm
六、添加开启自启
1.创建服务文件
vi /etc/systemd/system/postgresql.service
2.写入内容(路径按你实际目录改)
[Unit]
Description=PostgreSQL 17 database server
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
# 数据库目录
Environment=PGDATA=/app/postgres/pgsql/data
# 启动命令
ExecStart=/app/postgres/pgsql/bin/postgres -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
3.载入并设置开机自启
systemctl daemon-reload
systemctl enable postgresql --now
4.查看状态
systemctl status postgresql
看到 active (running) 即 OK,重启服务器后也会自动拉起。
5.注意
停掉旧进程(如果还想用 systemd 管)
sudo -u postgres pg_ctl -D /app/postgres/pgsql/data stop
#再让 systemd 一次拉起
systemctl start postgresql
#看状态
systemctl status postgresql
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)