PostgreSQL安装包官网下载地址:https://www.postgresql.org/ftp/source/v10.1/

(一) 安装

1)上传、解压

1
2
将postgresql-10.1.tar.gz上传到/home下
运行解压命令 tar -zxvf postgresql-10.1.tar.gz

2)检查当前系统环境能否安装PG

1
2
 cd /home/postgresql-10.1/
./configure --prefix=/usr/local/pgsql/

若出现下述错误

1
2
3
4
configure: error: readline library not found
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.

执行下述命令

1
yum -y install -y readline-devel

若再次运行./configure命令,出现下述问题

1
2
3
4
configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.

执行下述命令

1
yum install zlib-devel

3)编译安装

1
make && make install

4)创建postgresql专有用户

1
adduser postgres

5)创建postgresql数据目录,并赋予权限

1
2
mkdir /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql/

(二)启动

1)切换用户

1
su - postgres

2)进入bin目录

1
cd /usr/local/pgsql/bin/

3)初始化postgresql数据目录

1
./initdb -D /usr/local/pgsql/data

4)启动数据库

1
./pg_ctl start -D /usr/local/pgsql/data

(三)新建数据库、登录数据库的用户和用户密码

1)创建数据库,在/usr/local/pgsql/bin/目录下执行

1
./createdb mydb

2)创建用户(如用户名为lin,密码为LinBug)有两种方式:
方式一:通过默认数据库创建

1
2
先进入默认的 postgres 数据库: ./psql   默认数据库为postgres
CREATE USER lin WITH PASSWORD 'LinBug';

方式二:直接执行命令,交互式创建

1
./createuser -P lin

这会提示你输入新建用户的密码,重复输入密码后,创建成功

(四)访问数据库(以下操作确保是在/usr/local/pgsql/bin/目录下)

1
2
以默认用户名访问默认数据库(默认的用户名和数据库名都是postgres):./psql
以名为lin的角色登录名为mydb的数据库:./psql mydb -U lin

(五)远程访问数据库设置

远程访问数据库的认证方式主要有很多方式,我只设置基于TCP/IP连接的trust认证方式,需设置两个配置文件,
(1)修改配置文件postgresql.conf

1
vim /usr/local/pgsql/data/postgresql.conf

修改监听地址:

1
#listen_addresses=’localhost’ 改为 listen_addresses=’*’

(2)修改配置文件pg_hba.conf:

1
vim /usr/local/pgsql/data/pg_hba.conf

添加一条IP授权记录(如192.168.2.23),可以对一个网段授权

1
2
# IPv4 myhost connections:
host all all 192.168.117.0/24 trust

当然,可以设置所有网段IP可以访问:

1
2
# IPv4 remote address connections:
host all all 0.0.0.0/0 trust

(六)设置postgresql数据库开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下,linux文件即为linux系统上的启动脚本。
image
(1)将Linux文件复制到 /etc/init.d 目录下,并且将其重名为postgresql

1
cp /home/postgresql-10.1/contrib/start-scripts/linux /etc/init.d/postgresql

(2)进入/etc/init.d 目录下,修改postgresql文件

1
2
cd /etc/init.d/
vim postgresql

然后做以下修改:
将prefix设置为postgresql的安装路径:/usr/local/postgresql
将PGDATA设置为postgresql的数据目录路径:/usr/local/postgresql/data
将PGUSER设置为postgresql的用户:admin
将PGLOG 设置为 postgresql 的数据目录的日志文件夹下:$PGDATA/pg_log/serverlog
image
(3)添加到开机启动
修改文件属性:

1
chmod a+x postgresql

添加开机启动:

1
chkconfig --add postgresql

(4)测试postgresql的启停

1
2
3
4
systemctl start postgresql
systemctl status postgresql
systemctl stop postgresql
systemctl status postgresql

image
(5)远程Navicat连接测试
image
(七)若要使用postgresql作为gitlab的外挂数据库,还需要安装postgresql的扩展插件

1
2
进入目录:/home/deployer/postgresql-10.1/contrib
make && make install

注意:若出现下述问题,请检查防火墙是否开放5432端口权限

1
2
3
4
Unable to connect to server:
could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "192.168.1.205" and accepting
TCP/IP connections on port 5432