# PostgreSQL
## 下载
官网地址：[https://www.postgresql.org/](https://www.postgresql.org/)

下载地页面：[https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)

## 在线安装

使用yum命令添加PostgreSQL软件源。

```
[root@localhost ~] yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```

使用yum命令安装PostgreSQL。

```
[root@localhost ~] yum install postgresql12
[root@localhost ~] yum install postgresql12-server
[root@localhost ~] yum install postgresql12-contrib
```

初始化数据库。

```
[root@localhost ~] /usr/pgsql-12/bin/postgresql-12-setup initdb
```

配置开机启动与启动
```
[root@localhost ~] systemctl enable postgresql-12
[root@localhost ~] systemctl start postgresql-12
```

## 配置远程访问
### 修改密码
首先，切换到postgres用户。然后执行修改用户密码SQL语句。其中“postgres”为要修改密码的用户，“123456”为用户的密码。
```
[root@localhost ~] su - postgres
-bash-4.2$ psql
postgres=# alter user postgres with password '123456';
postgres-# \q

* 注意设置密码后面的分号不可以忽略
```


### 修改配置文件

打开并编辑文件“/var/lib/pgsql/12/data/postgresql.conf”。将“#listen_addresses = 'localhost'”改为“listen_addresses = '*'”
![PostgreSQL远程连接配置](./img/postgresql_001.png)

打开并编辑文件“/var/lib/pgsql/12/data/pg_hba.conf”。在文件的末尾添加“host  all  all  0.0.0.0/0  md5”。
![PostgreSQL远程连接配置](./img/postgresql_002.png)

### 安装Python3支持包
如果不需要数据库Python3支持，则忽略该步骤。
```
[root@localhost ~] yum install postgresql12-plpython3
```

要使用python扩展，需要打开数据库，执行如下SQL语句。
``` sql
CREATE extension plpython3u;
```

## 离线安装

在有网的CentOS机器上新建一个文件夹 使用yum把rpm 的安装包下载到 新建文件夹
```
mkdir pg12_rpm_packs
```

设置软件源
```
[root@localhost ~] yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```


下载pg server/client，contrib和其依赖的其他包，暂不安装：
```
yum install --downloadonly --downloaddir=./pg12_rpm_packs postgresql12-server postgresql12 postgresql12-contrib
```
下载后的rpm 包

![requirements.txt](./img/pg_0001.png)

压缩pg12_rpm_packs 文件夹
```
tar -czvf pg12_rpm_packs.tar.gz pg12_rpm_packs
```
导出至离线的centos 服务器并解压
```
tar -xzvf pg12_rpm_packs.tar.gz
```
 cd pg12_rpm_packs 进入文件夹 使用 rpm -ivh 进行rpm包安装 安装顺序如下
 ```
 rpm -ivh postgresql12-libs-12.3-1PGDG.rhel7.x86_64.rpm
 rpm -ivh postgresql12-12.3-1PGDG.rhel7.x86_64.rpm
 rpm -ivh postgresql12-server-12.3-1PGDG.rhel7.x86_64.rpm
 rpm -ivh postgresql12-contrib-12.3-1PGDG.rhel7.x86_64.rpm
```
安装成功事例图 安装顺序错乱会看到提示需要先安装哪个依赖
![requirements.txt](./img/pg_0002.png)

###初始化数据库 配置请参考在线安装，操作是一样的


### 安装离线Python3支持包

在有网的服务器上指定文件下载
```
yum install --downloadonly --downloaddir=./pg12_rpm_packs postgresql12-plpython3
```
![requirements.txt](./img/pg_003.png)

主要安装的是 libtirpc-0.2.4-0.16.el7.x86_64 和  python3-libs-3.6.8-13.el7.x86_64 先安装 python3-libs

```
rpm -ivh python3-libs-3.6.8-13.el7.x86_64.rpm --force --nodeps
```
 注意后面的 --force --nodeps 没有会安装失败  然后安装 libtirpc-0.2.4-0.16.el7.x86_64 注意这个要执行两边否则会缺少依赖包
 ```
rpm -ivh libtirpc-0.2.4-0.16.el7.x86_64 .rpm
```

然后执行安装 postgresql12-plpython3-12.3-1PGDG.rhel7.x86_64.rpm
```
rpm -ivh postgresql12-plpython3-12.3-1PGDG.rhel7.x86_64.rpm
```

打开数据库 输入扩展SQL
```
CREATE extension plpython3u;
```







 
 







