事情背景:需要在Linux上安装postgres数据库,但安装目录想直接指定,所以想通过源码编译安装pg
首先下载源码安装包。源码下载地址:https://github.com/postgres/postgres/releases
本人下载的版本是postgres-REL_12_3.tar.gz
由于涉及到编译安装,需要使用到root用户的权限,操作时确保权限足够。
用下面命令是以root用户进行操作
sudo -i
(1)将安装包上传到Linux服务器
(2)解压源码压缩文件
tar -xvfz postgres-REL_12_3.tar.gz
(3)编译前的配置。
cd postgres-REL_12_3
./configure
(4)正式编译
make
在这个过程中,会遇到各种依赖缺失而报错,通过查看对应的报错日志,通过yum install *** 进行安装即可。
在生产环境中,环境缺失各种依赖,所以根据报错安装了下面的依赖,可以参考一下 如果是离线环境的话,可以考虑用rpm包安装依赖
yum install -y gcc yum install -y bison yum install zlib-devel yum install -y readline-devel yum install -y openssl-devel yum isntall -y flex
(5)安装
make install
(6)创建系统pg用户,并设置密码
adduser postgres
passwd postgres
(7)创建数据库数据存放的文件夹 文件夹可以自定义,生产环境很多都是下面的路径,不影响后续操作
mkdir /usr/local/pgsql/data
(8)授权数据文件夹给postgres用户
chown -R postgres:postgres /usr/local/pgsql/data
(9)初始化数据库 -D 后面是你指定的数据文件夹所在位置
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data #有配置PGDATA环境的换直接initdb即可
(10)启动postgres service 服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/data/logfile start
-------------------------
这里算是安装好数据库了
下面是测试
(11)创建第一个数据库
createdb test
(12)使用psql工具连接进入到数据库操作命令行
psql test
(13)设置sql语句执行的上下文(即针对哪一个Schema操作)
set search_path to public
(14)创建测试表
create table test(id int primary key,name varchar(50) not null);
insert into test(id,name) values(1,'小明');
insert into test(id,name) values(2,'小红');
(15)查看表记录
select * from test;
以上就安装好pgsql数据库了。
开机服务配置:将下载的postgres安装包postgres-REL_10_9里的contrib/start-scripts路径下的liunx文件复制到 /etc/init.d/目录下
(1)切换到root用户
sudo -i
(2)将安装包里的linux文件复制到 /etc/init.d/目录下,重命名为postgresql.
cp /tmp/postgres-REL_10_9/contrib/start-scripts/linux /etc/init.d/postgresql #我的pgsql的安装包是放在/tmp/目录下的
(3)修改/etc/init.d/postgresql文件的两个变量
vi /etc/init.d/postgresql
这是默认的路径,如果不一致则修改。prefix=数据库的安装路径 PGDATA=数据库数据的路径
(4)启动postgresql服务
service postgresql start
service postgresql status #查看postgresql服务状态
(5)设置postgresql服务开机自启动
chkconfig --add postgresql
这样就完成了postgres的安装