源码安装PostgreSQL
数据库版本:PostgreSQL 9.6.3
系统版本:
CentOS release 6.6 (Final)
下载软件(Download software):
# wget https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.gz
查看是否已经安装(Check is not instatll):
# ps -ef |grep pgsql
root 28590186950 20:24 pts/0 00:00:00 grep pgsql
$ rpm -qa |grep postgres
postgresql-libs-8.4.18-1.el6_4.x86_64
解压(Extract software):
# tar xf postgresql-9.6.3.tar.gz
编译和安装(Complie):
# cd postgresql-9.6.3
# ./configure --prefix=/usr/local/pgsql
编译所有能编译的东西,包括文档(HTML和手册页)以及附加模块(contrib):
# make world && make install-world
......
make: Leaving directory `/home/tools/postgresql-9.6.3/contrib/vacuumlo'
make: Leaving directory `/home/tools/postgresql-9.6.3/contrib'
PostgreSQL, contrib, and documentation installation complete.
创建用组和用户(Create group and user)
# groupadd -g 101 dba
# cat /etc/group|grep dba
dba:x:101:
# useradd -u 516 -g dba -G root -d /usr/local/pgsqlpostgres
# id postgres
uid=516(postgres) gid=101(dba) groups=101(dba),0(root)
-u UID
-g 初始用户组
-G次要用户组
-m 创建用户家目录(系统用户默认不创建家目录)
-M 不创建用户家目录(普通用户默认创建家目录)
-s shell 默认是/bin/bash
-d指定家目录
# groups postgres
postgres : dba root
配置postgres密码
# passwd postgres
# ls -al /etc/skel/
total 20
drwxr-xr-x.2 root root 4096 Dec 202016 .
drwxr-xr-x. 84 root root 4096 Jul 11 22:27 ..
-rw-r--r--.1 root root 18 Jul 182013 .bash_logout
-rw-r--r--.1 root root176 Jul 182013 .bash_profile
-rw-r--r--.1 root root124 Jul 182013 .bashrc
# cp /etc/skel/.* /usr/local/pgsql/
创建数据目录(Create data folder)
# mkdir -p /usr/local/pgsql/data
配置.bash_profile(Configure .bash_profile)
# cat /usr/local/pgsql/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
export PATH=$PATH:/usr/local/pgsql/bin
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1
修改文件权限和所有者(Chmod and chown)
# chmod -R 755 /usr/local/pgsql
# chown -R postgres:dba /usr/local/pgsql
# chmod -R 700 /usr/local/pgsql/data
配置postgresql服务启动和设置自启动(Configure postgresql service and boot auto start) --这步可不做
# cp /home/tools/postgresql-9.6.3/contrib/start-scripts/linux /etc/init.d/postgresql
# chmod +x /etc/init.d/postgresql
# chkconfig --list |grep postgresql
# chkconfig --add postgresql
# chkconfig --list |grep postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
初始化数据和启动(Initialize database and start database)
# su - postgres
$ cd
$ pwd
/usr/local/pgsql
$ . .bash_profile
#初始化生成数据文件
Darren2:postgres:/usr/local/pgsql:>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
#启动数据库
Darren2:postgres:/usr/local/pgsql:>pg_ctl start
server starting
Darren2:postgres:/usr/local/pgsql:>LOG:database system was shut down at 2017-07-12 00:49:17 CST
LOG:MultiXact member wraparound protections are now enabled
LOG:database system is ready to accept connections
LOG:autovacuum launcher started
创建用户和数据库(Create user and database)
psql
psql (9.6.3)
Type "help" for help.
postgres=# create user admin password'admin' login;
CREATE ROLE
postgres=# create database testdb with owner=admin;
CREATE DATABASE
Darren2:postgres:/usr/local/pgsql:>pg_ctl status
pg_ctl: server is running (PID: 51498)
/usr/local/pgsql/bin/postgres
安装过程中常见报错
编译时候报错:
# ./configure --prefix=/usr/local/pgsql --without-zlib
......
configure: error: readline library not found--提示找不到readline
If you have readline already installed, see config.log for details on the
failure.It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.
查看系统已经安装readline:
# rpm -qa |grep readline
compat-readline5-5.2-17.1.el6.x86_64
readline-6.0-4.el6.x86_64
通过yum search可以发现没有安装readline-devel:
# yum search readline
......
readline-devel.i686 : Files needed to develop programs which use the readline library
readline-devel.x86_64 : Files needed to develop programs which use the readline library
......
通过yum安装之后,在编译即可通过:
# yum install -y readline-devel
页:
[1]