centos7默认的安装源里面自带了postgresql,我们可以不用下载postgresql安装包或者升级安装源,只不过自带的postgresql版本比较低,这里CentOS Linux release 7.2.1511(Core)系统,添加网易163的源之后,自带的postgresql是9.2版本,这里介绍如何通过yum安装postgresql以及安装之后的设置。默认安装之后,只会监听本机127.0.0.1地址,开启5432端口,而且只容许postgres用户登录。为了让远程客户端能够连接,我们需要修改配置监听地址改为"*"(postgresql.conf文件中),即监听所有地址。为了在本地无需切换到postgres用户就可以登录,我们需要增加在postgresql配置文件pg_hba.conf配置文件中修改peer为trust,即登录用户是可信的,无需验证权限,为了让外部主机可以登录,还需要增加一行配置信息。
host all all 0.0.0.0/0 md5
下面通过实战来演示如何安装以及配置postgresql数据库。
检查安装源:
yum search postgresql
安装:
yum install postgresql-server
安装postgresql-server会附带安装上postgres客户端,因此不必重复安装。安装完成,postgresql操作相关的命令都会添加到/usr/bin目录下,可以在命令行下直接使用。
[root@client usr]# which psql
/usr/bin/psql
[root@client sbin]# which postgresql-setup
/usr/bin/postgresql-setup
[root@client sbin]# whereis postgresql-setup
postgresql-setup: /usr/bin/postgresql-setup /usr/share/man/man1/postgresql-setup.1.gz
检查一下版本信息:
同时,还会生成postgres用户,postgresql启动之后,在本机只能切换到postgres用户下才可以通过psql访问。
初始化数据库:
安装完成之后,不能直接启动数据库,需要先执行初始化,初始化之后,会生成postgresql相关配置文件和数据库文件,他们都会存放在路径/var/lib/pgsql/data下。
postgresql-setup initdb
检查一下数据库存储路径:
启动数据库:
service postgresql start
启动成功,会监听本机127.0.0.1的5432端口。
登录测试:
默认情况下,我们使用psql postgres命令登录,使用的是root用户,会提示没有这个角色,我们按照提示使用psql -U postgres命令登录,发现提示Peer authentication failed for user "postgres",我们只能切换到postgres用户,然后直接登录:
需要解决root用户下无法通过psql -U postgres登录的问题,我们需要修改配置文件pg_hba.conf,将
local all all peer
修改为:
local all all trust
另外,我们需要让外部IP能够连接本机的postgresql,我们需要修改postgresql.conf配置文件中的listen_addresses属性为"*",并且在pg_hba.conf配置文件中新增一行配置:
host all all 0.0.0.0/0 md5
修改配置:
配置文件经过初始化之后,全部会生成在/var/lib/pgsql/data目录下:
编辑postgresql.conf文件,修改监听地址:
再次启动数据库:
修改成功之后,重启数据库服务,监听本机地址发生变化,不再是127.0.0.1了。
登录测试:
本地可以在root用户下使用psql -U postgres直接登录了,不会报错。
不再出现之前登录失败的情况了。
远程连接测试:
安装postgresql就是为了让外部能够连接的,这里安装之前,需要修改postgres用户的密码,在本机,修改密码有两种方式:直接\password 的方式和通过alter user postgres with password 'postgres'语句:
远程登录的时候,我们需要用户名和密码,这里在windows上使用navicat premium:
至此,安装过程就彻底结束了,后续如何操作数据库,就是和安装无关了。