系统自带版本9.x略低,近几次升级功能较多,本次安装最新版本。

一、更新源

地址:https://yum.postgresql.org/repopackages.php

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

二、安装postgresql

先查看postgresql源

yum list  | grep postgresql

我们需要安装的是这两个。postgresql10-contrib postgresql10-server

yum install postgresql10-contrib postgresql10-server -y

三、初始化数据库

Postgresql安装目录是/usr/pgsql-10,而Postgresql的数据目录是/var/lib/pgsql/版本号/data目录

在这里,如果在装系统开始分配var空间足够大则可以继续,如果分配var空间不够,我们需要更改数据目录,在这里,我们假设var空间足够大。直接开始初始化。

/usr/pgsql-10/bin/postgresql-10-setup initdb

四、启动数据库并设置开机启动

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10.service

五、修改密码

修改PostgreSQL数据库的默认用户postgres的密码(注意不是linux系统帐号)

第一步:修改postgresql密码

1、PostgreSQL登录(使用psql客户端登录)

# sudo -u postgres psql

//其中,sudo -u postgres 是使用postgres 用户登录的意思

//PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,所以这里设定为'postgres'

2.修改PostgreSQL登录密码:

postgres=# ALTER USER postgres WITH PASSWORD 'postgres';

//postgres=#为PostgreSQL下的命令提示符

3.退出PostgreSQL psql客户端

postgres=# \q

PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’

第二步:修改linux系统的postgres用户的密码(密码与数据库用户postgres的密码相同)

1.删除PostgreSQL用户密码

# sudo passwd -d postgres

passwd: password expiry information changed.

//passwd -d 是清空指定用户密码的意思

2.设置PostgreSQL用户密码

PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为'postgres’(这取决于 第二步中的密码,只要与其相同即可)。

现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了。

#sudo -u postgres passwd
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:

passwd:已成功更新密码

六、默认情况下postgresql是不用密码不支持远程登录的。我们需要修改配置文件

vi /var/lib/pgsql/10/data/pg_hba.conf

posgresql-config

md5 改为 password

保存退出

我们改远程访问

vi /var/lib/pgsql/10/data/postgresql.conf

修改

postgresql——config

重启postgresql

systemctl restart postgresql-10

*postgres修改端口后使用psql登录报错

could not change directory to "/root": Permission denied
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

其实报错原因就是修改端口后,系统默认存放sokect的文件名字修改了,导致使用原来的文件名无法找到该文件,这里postgres通过PGPORT 来作为该文件命名的一部分所以需要在/etc/profile 添加

export PGPORT=15432

然后

source /etc/profile

测试

su postgres
psql

psql