PostgreSQL编译安装教程
下载安装
1.在家目录创建一个文件夹放下载安装包
mkdir software
cd software
2.下载文件压缩包
wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz
3.解压
tar -xzvf postgresql-16.0.tar.gz
4.编译
在software/postgresql-16.0下
cd software/postgresql-16.0
# 编译出现 no acceptable C compiler found in $PATH
yum install gcc-c++
./configure --prefix=/usr/local/pgsql
编译过程中会出现三个数据包未发现的情况的一个情况
yum install libicu-devel
yum install -y readline-devel
yum install zlib-devel
看到这个就是编译好了
5.安装
make && make install
用户权限和环境变量设置
#创建用户组postgres
groupadd postgres
#创建用户postgres并设置groups、gid和家目录
useradd -g postgres -G postgres -d /home/postgresql postgres
#设置用户密码
passwd postgres
创建数据目录和日志目录
注意当前路径是在/usr/local/pgsql下
cd /usr/local/pgsql
mkdir data log
设置权限
接下来需要设置权限,将/usr/local/pgsql (我们安装PostgreSQL数据库的目录) 目录全部赋权给postgres用户
chown -R postgres.postgres /usr/local/pgsql/
设置环境变量
为了方便起见设置一下相关的环境变量,此处是要设置postgres用户的环境变量,所以首先要把Linux的登陆用户由root切换到以postgres用户登陆。
su - postgres
vim .bash_profile
添加一下配置
PGHOME=/usr/local/pgsql
export PGHOME
PGDATA=/usr/local/pgsql/data
export PGDATA
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
刷新配置生效
source /home/postgresql/.bash_profile
检查是否生效
psql -V
看到安装PostgreSQL的版本号则代表生效
初始化数据库
cd /usr/local/pgsql/bin/
这个是这个数据库的初始化指令
如果pgdata目录没有指定,则会默认使用环境变量中的PGDATA指定的目录作为数据库存放的目录,由于之前我们刚刚设置了"PGDATA=/usr/local/pgsql/data"环境变量,所以此处我们也就无需再额外指定,直接执行初始化命令即可。
initdb
这样就成功了
修改配置文件
在"/usr/local/pgsql/data"的目录可以看到生成的数据和配置文件等。
cd /usr/local/pgsql/data
数据库访问控制配置文件
主要是配置postgresql.conf 和 pg_hba.conf 个。
- postgresql.conf 针对实例的配置
- pg_hba.conf 针对数据库访问的控制
vim postgresql.conf
vim pg_hba.conf
PostgreSQL启动与关闭
手动
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg_server.log start
自动
此步骤需要root用户操作
PostgreSQL解压后的安装包目录中提供了数据库启动与关闭的脚本,此脚本不但可以帮助我们简化操作,而且可以用作开机启动的脚本和service/systemctl 控制服务的脚本。目录里"linux"文件就是我们要找的文件。
cd /root/software/postgresql-16.0/contrib/start-scripts/
把文件"linux"拷贝到目录"etc/init.d/"下,并改名为postgresql。
把脚本文件"postgresql"加入到开机启动的程序列表。
赋予"postgresql"文件有执行的权限。
cp /root/software/postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql或者systemctl enable postgresql
chmod 755 /etc/init.d/postgresql
启动和停止
service postgresql start
service postgresql stop
客户端测试连接
链接时候要在root启动
su - postgres
psql
设置数据库密码密码
postgres=# \password