当前位置:Gxlcms > 数据库问题 > fedora22用rpm包安装配置postgresql数据库

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

时间:2021-07-01 10:21:17 帮助过:21人阅读

  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   

人气教程排行