fedora22用rpm包安装配置postgresql数据库
2015-08-09 21:18
603 查看
严格内网环境,无网络连接,新装fedora 22系统,无任何其他配置。
数据库:postgresql-9.4
安装过程使用root用户
postgresql94-9.4.4-1PGDG.f22.x86_64.rpm
postgresql94-server-9.4.4-1PGDG.f22.x86_64.rpm
默认的数据文件目录为:/var/lib/pgsql/9.4/data
和yum安装一样,pg会新建一个系统用户postgres,但在系统/home目录下没有新建postgres用户主目录。对于使用默认数据目录的用户来说,这个目录是可有可无的。但是对于要该数据目录到postgres用户主目录下来说,这个用户主目录则必需手动创建。
创建目录
给目录赋权
启动服务
默认postgresql的服务是关闭的,手动启动
设置服务开机启动
要设置开机启动
重启或者重新加载
要重启或者reload实例,用命令
先从当前的root用户切换到postgres用户,因为数据库操作必须使用pg自己建的这个用户:
切换目录
也别注意里提到过,pg提供的命令没有加入到环境变量,需要手动加入或者到命令目录下执行,切换到pg数据库安装目录的bin目录下:
初始化
这里注意是初始化到我们上一步自己创建的数据目录下,而不是pg默认的数据目录下,所有需要加上路径
后来问了bigzhu之后我自己也是恍然大悟:logfile文件没有指定目录默认是在当前目录新建的,但是当前目录/usr/pgsql-9.4/bin是属于root用户的(因为安装时使用的是root),所以当前用户postgres是没有权限在root用户的文件夹中新建logfile文件的,所以才启动失败。
指定logfile文件的路径,用命令再启动
yum安装的启动方式
如果采用的是类似yum的包管理工具安装,那么pg的目录已加入了环境变量,在/home/postgres目录下,切换到postgres用户,然后用命令
命令全路径启动
在/home/postgres目录下,切换到postgres用户,然后用命令的全路径
修改
为对所有的ip都监听,注意要去掉注释符号#
到此,数据库安装配置启动全部完成,可以正常使用。
现在的情况是:
数据库已经启动并正常运行,端口是5432;
远程链接已经设置完成并且重启了数据库;
但是远程链接就连不上,最后发现的原因是feodra 22自带的防火墙开启,把外来链接屏蔽掉了,关掉feodra的防火墙:
安装
1.安装环境:
操作系统:fedora 22数据库:postgresql-9.4
安装过程使用root用户
2.安装包:
postgresql94-libs-9.4.4-1PGDG.f22.x86_64.rpmpostgresql94-9.4.4-1PGDG.f22.x86_64.rpm
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.安装完成之后:
默认的pg数据库安装目录为:/usr/pgsql-9.4默认的数据文件目录为:/var/lib/pgsql/9.4/data
5.特别注意:用rpm包安装比直接用工具yum装少了2步:
postgres提供的系统命令:如pg_ctl,psql,initdb,pg_dump等没有自动写入系统环境变量,因此不能直接使用,而要在安装目录下或者带上全路径或者手动加入全局环境变量后,才可以在所有的用户下直接使用。和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 startOK,启动成功。
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 联接?用图形界面工具测试报错:
现在的情况是:
数据库已经启动并正常运行,端口是5432;
远程链接已经设置完成并且重启了数据库;
但是远程链接就连不上,最后发现的原因是feodra 22自带的防火墙开启,把外来链接屏蔽掉了,关掉feodra的防火墙:
sudo systemctl stop firewalld.service链接成功,可以使用。
相关文章推荐
- Linux socket 初步
- 升级fedora16beta遇到的问题
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死