一、安装步骤
软件版本:postgresql-12
0、检查PostgreSQL 是否已经安装
rpm -qa | grep postgres 检查PostgreSQL 是否已经安装
rpm -qal | grep postgres 检查PostgreSQL 安装位置
若已经安装,则先卸载。
yum remove postgresql*
1、安装YUM-PostgreSQL存储库
YUM-PostgreSQL存储库由PostgreSQL官方提供。
[root@localhost ~]# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2、安装PostgreSQL12
[root@localhost ~]# yum -y install postgresql12 postgresql12-server
3、初始化数据库
[root@localhost ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
4、修改配置,监听所有网卡地址
这样其他主机也可以通过主网卡访问到PostgreSQL数据库,默认情况下如果不修改,则PostgreSQL只允许本地访问。
[root@localhost ~]# vi /var/lib/pgsql/12/data/postgresql.conf
listen_addresses = '*'
port = 5432
5、添加信任网段,允许其他主机访问
[root@localhost ~]# vi /var/lib/pgsql/12/data/pg_hba.conf
# 添加以下内容到文件尾部。
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
# 身份验证方法(METHOD):
# - md5 密码经过MD5加密后登陆到数据库,一般采用选择这种方式。
# - password 使用明文密码登陆到数据库。
# - trust 信任该主机,无需密码即可登陆到数据库。
# - ident 通过读取"pg_ident.conf"文件里面具有系统用户=数据库用户的映射关系,可以使用系统用户登陆到
# 数据库。
6、启动服务
[root@localhost ~]# systemctl enable postgresql-12
[root@localhost ~]# systemctl start postgresql-12
[root@localhost ~]# systemctl status postgresql-12
● postgresql-12.service - PostgreSQL 12 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-03-05 08:22:38 EST; 5s ago
Docs: https://www.postgresql.org/docs/12/static/
[root@localhost ~]# netstat -lnupt |grep postmaster
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 35219/postmaster
tcp6 0 0 :::5432 :::* LISTEN 35219/postmaster
7、配置环境变量
配置环境变量,使“psql”客户端命令可以再全局使用。
[root@localhost ~]# vi /etc/profile
# PostgreSQL
export POSTGRESQL_BIN="/usr/pgsql-12/bin/"
export PATH=$PATH:$POSTGRESQL_BIN
[root@localhost ~]# source /etc/profile
8、查看数据库版本
切换操作用户“postgres”,“postgres”用户是PostgreSQL的超级用户。
[root@localhost ~]# sudo -i -u postgres
-bash-4.2$ psql
psql (12.2)
Type "help" for help.
postgres=# SELECT version();
version
-------------------------------------------------------------------------------------------------------
PostgreSQL 12.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)
9、创建数据库,查看数据库列表
postgres=# CREATE DATABASE zyhdb;
CREATE DATABASE
postgres=# select pg_database.datname from pg_database;
datname
-----------
postgres
zyhdb
template1
template0
(4 rows)
10、修改"postgres"用户密码
默认情况下"postgres"用户没有密码,我们需要给超级管理员一个密码。
postgres=# \password
Enter new password: XXX
Enter it again: XXX
postgres=# exit
-bash-4.2$ exit
二、使用navicat连接数据库
1.打开navicat,点击左上角连接,选择postgresql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQGvL1Ko-1605248674700)(安装PostgreSQL.assets/3.png)]
2.填写好连接信息,ip地址,数据库密码,点击确定即可
ip地址可通过“ifconfig”查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0iX2w2MY-1605248674706)(安装PostgreSQL.assets/4.png)]
二、遇到的问题
安装中
1.linux网络连接问题,连接不上网络
解决办法:
(1)在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式:
不要勾选”使用本地DHCP服务将IP分配给虚拟机“这个选项。然后是配置子网ip,子网IP与宿主机的ip一定不能处在同一地址范围里,保证ip的第三个数字在0到254。
在这个界面接着点"NAT设置",查看虚拟机的网关
(2)以root权限编辑/etc/sysconfig/network-scripts/ifcfg-ens32这个文件
不一定都叫“ifcfg-ens32”,可以自己在“network-scripts”文件下查找“ifcfg”开头的文件查看
BOOTPROTO=static #设置静态Ip
ONBOOT=yes #这里如果为no的话就改为yes,表示网卡设备自动启动
GATEWAY=192.168.10.2 #这里的网关地址就是第二步获取到的那个网关地址
IPADDR=192.168.10.150 #配置ip,在第二步已经设置ip处于192.168.10.xxx这个范围,我就随便设为150了,只要不和网关相同均可
NETMASK=255.255.255.0#子网掩码
DNS1=202.96.128.86#dns服务器1,填写你所在的网络可用的dns服务器地址即可
DNS2=8.8.8.8
(3)更改本机电脑网络设置和虚拟机网络设置
(4)重启网卡服务,执行
service network restart
2.Yum安装报错Error: Nothing to do
解决办法:更新yum源
yum -y -update
3.更新yum源报错
Error: initscripts conflicts with centos-release-7-4.1708.el7.centos.x86_64 You could try using --skip-broken to work around the problem ** Found 123 pre-existing rpmdb problem(s), ‘yum check’ output follows:
解决办法:修改yum配置文件
cd /etc
vi yum.conf
添加:exclude=kernel*
exclude=centos-release*
exclude=initscripts
使用navicat连接数据库
1.连接不上服务器
could not connect to server: Connection timed out(Ox0000274C/10060)
ls the server running on host “192.168.10.150” and accepting
TCP/IP connections on port 5432?
解决办法:
(1)重启系统
reboot
(2)防火墙开放端口
# 添加指定端口
$ firewall-cmd --add-port=5432/tcp --permanent
# 重载入端口
$ firewall-cmd --reload
# 查询端口是否开启成功
$ firewall-cmd --query-port=5432/tcp
2.用户“postgres”的密码验证失败
解决办法:
修改postgres密码
#切换到postgres用户
[root@bogon ~]# sudo -i -u postgres
#进入控制台
[postgres@bogon ~]$ psql
#修改密码
postgres=# \password
Enter new password:
Enter it again:
之后再使用修改后的密码就可以连接成功