事情背景:需要在Linux上安装postgres数据库,但安装目录想直接指定,所以想通过源码编译安装pg
首先下载源码安装包。源码下载地址:https://github.com/postgres/postgres/releases
本人下载的版本是postgres-REL_10_9.tar.gz
用下面命令切换root用户进行操作:
sudo -i
(1)将安装包上传到Linux服务器
(2)解压源码压缩文件
tar -xvfz postgres-REL_10_9.tar.gz
(3)编译前的配置。
cd postgres-REL_10_9
./configure
(4)正式编译
make
在这个过程中,会遇到各种依赖缺失而报错,通过yum install *** 进行安装即可。
(5)安装
make install
(6)创建系统pg用户,并设置密码
adduser postgres
passwd postgres
(7)创建数据库数据存放的文件夹
mkdir /usr/local/pgsql/data
(8)授权数据文件夹给postgres用户
chown postgres /usr/local/pgsql/data
(9)环境变量配置
vi .bash_profile
添加PGDATA、PATH等,如下:
export PGDATA=/usr/local/pgsql/data export PG_HOME=/usr/local/pgsql export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LID_LIBRARY_PATH export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PG_HOME/bin
(10)重启配置
source .bash_porfile
(11)初始化数据库
initdb -D /usr/local/pgsql/data #有配置PGDATA环境的换直接initdb即可
(10)启动postgres service 服务
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/data/logfile
(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的安装