码迷,mamicode.com
首页 > 数据库 > 详细

fedora22用rpm包安装配置postgresql数据库

时间:2015-08-09 22:38:03      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:fedora   linux   postgresql   数据库安装配置   postgres   

严格内网环境,无网络连接,新装fedora 22系统,无任何其他配置。

安装

1.安装环境:

  1. 操作系统:fedora 22
  2. 数据库:postgresql-9.4
  3. 安装过程使用root用户

2.安装包:

  1. postgresql94-libs-9.4.4-1PGDG.f22.x86_64.rpm
  2. postgresql94-9.4.4-1PGDG.f22.x86_64.rpm
  3. postgresql94-server-9.4.4-1PGDG.f22.x86_64.rpm

3.严格按照顺序安装:

rpm -ivh postgresql94-libs-9.4.4-1PGDG.f22.x86_64.rpm
rpm -ivh postgresql94-9.4.4-1PGDG.f22.x86_64.rpm
rpm -ivh postgresql94-server-9.4.4-1PGDG.f22.x86_64.rpm

4.安装完成之后:

  1. 默认的pg数据库安装目录为:/usr/pgsql-9.4
  2. 默认的数据文件目录为:/var/lib/pgsql/9.4/data

5.特别注意:用rpm包安装比直接用工具yum装少了2步:

  1. postgres提供的系统命令:如pg_ctl,psql,initdb,pg_dump等没有自动写入系统环境变量,因此不能直接使用,而要在安装目录下或者带上全路径或者手动加入全局环境变量后,才可以在所有的用户下直接使用。
  2. 和yum安装一样,pg会新建一个系统用户postgres,但在系统/home目录下没有新建postgres用户主目录。对于使用默认数据目录的用户来说,这个目录是可有可无的。但是对于要该数据目录到postgres用户主目录下来说,这个用户主目录则必需手动创建。

6.设置数据文件目录

要自己设置数据库的数据文件目录为postgres用户的主目录,由于rpm安装没有自动创建,所以需要手动创建。
创建目录
mkdir -p /home/postgres/data
给目录赋权
chown -R postgres:postgres /home/postgres

配置

1.初始化系统的数据库服务

初始化数据库簇
sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb
这里要特别注意的是pgsql-9.2以及之前版本的初始化方式,两者的最大区别在于命令postgresql后面有没有跟版本信息
sudo postgresql-setup initdb
启动服务
默认postgresql的服务是关闭的,手动启动
sudo systemctl start /usr/pgsql-9.4/bin/postgresql-9.4.service
也要注意psql-9.2以及之前版本的命令
sudo systemctl start postgresql.service
设置服务开机启动
要设置开机启动
sudo systemctl enable /usr/pgsql-9.4/bin/postgresql-9.4.service
也要注意psql-9.2以及之前版本的命令
sudo systemctl enable postgresql.service
重启或者重新加载
要重启或者reload实例,用命令
sudo systemctl restart /usr/pgsql-9.4/bin/postgresql-9.4.service
sudo systemctl reload /usr/pgsql-9.4/bin/postgresql-9.4.service
也要注意psql-9.2以及之前版本的命令
sudo systemctl restart postgresql.service
sudo systemctl reload postgresql.service

2.初始化数据库

切换用户
先从当前的root用户切换到postgres用户,因为数据库操作必须使用pg自己建的这个用户:
su postgres 
切换目录
也别注意里提到过,pg提供的命令没有加入到环境变量,需要手动加入或者到命令目录下执行,切换到pg数据库安装目录的bin目录下:
cd /usr/pgsql-9.4/bin
初始化
这里注意是初始化到我们上一步自己创建的数据目录下,而不是pg默认的数据目录下,所有需要加上路径
./initdb -D /home/postgres/data
初始化成功后会有提示:
技术分享

2.启动数据库

采用logfile的方式启动,上面也有两种启动方式的提示:
./pg_ctl -D /home/postgres/data -l logfile start
命令没有错,但是呢一启动就报错:logfile没有权限。我是百思不得其解:启动的数据文件夹是属于postgres用户的。我又尝试先去/home/postgres下先建好logfile文件再启动还是报同样的错误,但是明明文件夹和文件都是属于当前用户postgres的啊。
后来问了bigzhu之后我自己也是恍然大悟:logfile文件没有指定目录默认是在当前目录新建的,但是当前目录/usr/pgsql-9.4/bin是属于root用户的(因为安装时使用的是root),所以当前用户postgres是没有权限在root用户的文件夹中新建logfile文件的,所以才启动失败。
指定logfile文件的路径,用命令再启动
./pg_ctl -D /home/postgres/data -l /home/postgres/logfile start
OK,启动成功。

3.启动错误分析

基于以上对错误的理解,那么采用其他2种方式也应该是可以的。
yum安装的启动方式
如果采用的是类似yum的包管理工具安装,那么pg的目录已加入了环境变量,在/home/postgres目录下,切换到postgres用户,然后用命令
pg_ctl -D /home/postgres/data -l logfile start
肯定没有问题,logfile文件就创建在当前属于postgres用户的文件夹内。
命令全路径启动
在/home/postgres目录下,切换到postgres用户,然后用命令的全路径
/usr/pgsql-9.4/bin/pg_ctl -D /home/postgres/data -l logfile start
应该也没有问题,logfile文件也是创建在当前属于postgres用户的文件夹内。

4.开启远程链接

pg数据库默认只开启本地链接,不能通过域名或者ip来远程链接,修改配置文件
su root
vi /home/postgres/data/postgresql.conf
注意这里要使用修改后的数据目录来配置,而不是pg默认的安装目录。
修改
#listen_addresses = 'localhost'
为对所有的ip都监听,注意要去掉注释符号#
listen_addresses = '*'

5.修改访问认证

用命令
su root
vi /home/postgres/data/pg_hba.conf
修改
# IPv4 local connections:
host    all             all             127.0.0.1/32          trust
为md5认证
# IPv4 local connections:
host    all             all             0.0.0.0/0          md5

6.重启数据库

切换用户,命令重启
/usr/pgsql-9.4/bin/pg_ctl -D /home/postgres/data -l logfile restart

到此,数据库安装配置启动全部完成,可以正常使用。

错误补充

当我使用远程应用服务器连接到本数据库时报错:
psql: 无法联接到服务器: 没有到主机的路由
        服务器是否在主机 "135.32.9.99" 上运行并且准备接受在端口
5432 上的 TCP/IP 联接?
用图形界面工具测试报错:技术分享
现在的情况是:
  1. 数据库已经启动并正常运行,端口是5432;
  2. 远程链接已经设置完成并且重启了数据库;
但是远程链接就连不上,最后发现的原因是feodra 22自带的防火墙开启,把外来链接屏蔽掉了,关掉feodra的防火墙:
sudo systemctl stop firewalld.service
链接成功,可以使用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

fedora22用rpm包安装配置postgresql数据库

标签:fedora   linux   postgresql   数据库安装配置   postgres   

原文地址:http://blog.csdn.net/kmust20093211/article/details/47377937

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!