默认在防火墙关闭情况下安装
1.上传安装包到/usr/local/src 目录下
cp postgresql-9.5.5.tar.gz /usr/local/src/postgresql-9.5.5.tar.gz
cd /usr/local/src
2.解压压缩包
tar -xvf postgresql-9.5.5.tar.gz
进入解压的目录
cd postgresql-9.5.5
3.编译时仅指定一个安装目录
./configure --prefix=/usr/local/psql
4.编译安装数据库
make
看到如下提示即可说明编译成功:
make install
看到如下提示即可说明编译安装成功:
5.添加用户
useradd pgadmin
查看用户是否创建成功:
6.设置权限
将postgres的数据目录全部赋权给pgadmin用户(此处我将postgres的数据目录指定在在/usr/local/postgresql/data目录下):
chown -R pgadmin:pgadmin /usr/local/psql/
7.创建data文件夹
mkdir /usr/local/pgsql/data
给文件夹权限
chown pgadmin.pgadmin data
8.设置环境变量
最后为了方便起见设置一下相关的环境变量,此处仅仅设置pgadmin用户的环境变量,所以首先通过su - pgadmin切换到pgadmin用户,打开.bash_profile文件并追加以下内容:
cd ~/
vi.bash_profile
添加内容如下:
PGLIB=/usr/local/psql/lib
PGDATA=/usr/local/psql/data
PATH=$PATH:/usr/local/psql/bin
MANPATH=$MANPATH:/usr/local/psql/man
export PGLIB PGDATA PATH MANPATH
修改完成后可以通过source ./.bash_profile使其立即生效,接下来检验一下环境变量是否设置正确,切换任意目录输入which psql以及psql -V即可分别查看psql客户端的路径以及postgresql的数据库版本,如下图:
9.初始化数据库
由于配置了环境变量,所以此处我们直接执行initdb即可完成db初始化,但在这之前我们可以通过initdb --help看一下初始化相关的帮助信息:
如上图,可以看到在使用initdb进行初始化的同时我们可以指定参数来同时进行一些初始化工作,例如指定pgdata(postgresql数据目录)、指定encoding(编码)、指定数据库超级用户的用户名和密码等等,在最后面我标记出的这段话指出了如果data目录没有指定,则会默认使用环境变量中的PGDATA,由于之前我们刚刚设置了PGDATA环境变量,所以此处我们也就无需再额外指定,最后执行初始化命令即可:
initdb
如下表示初始化成功:
启动数据库命令如下:
pg_ctl -D /usr/local/psql/data -l logfile start
初始化成功之后data目录加载出数据:
/usr/local/psql/data
10.访问控制配置
访问控制配置,供远程连接使用:
修改pg_hba.conf文件
文件在/usr/local/psql/data目录下
无密码模式修改内容如下:(根据项目自行选择)
# IPv4 local connections:
host all all 0.0.0.0/0 trust
# IPv6 local connections:
host all all ::/0 trust
密码模式修改内容如下:(根据项目自行选择)
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::/0 md5
11.修改监听地址
修改postgresql.conf文件
文件在/usr/local/psql/data目录下
修改内容如下:
开放监听端口
listen_addresses = '*'
12.启动验证
su pgamdin 用户下启动
启动数据库命令如下:
pg_ctl -D /usr/local/psql/data -l logfile start
13.设置pgadmin用户密码:
密码默认:kgpgadmin
接下来要做的第一件事就是设置pgadmin用户的密码(默认为空),用psql连接成功后直接输入\password即会提示输入两次密码,如下图:
su pgadmin 用户下
psql -U pgadmin -d postgres
14.远程连接验证:
psql 可复制到/usr/local/bin/目录下;可实现任何目录下都可执行该命令