在RHEL 下安装PostgreSQL
一、安装PostgreSQL
1、从官方网站下载源代码包,然后解压到一个目录中,比如是/home/postgresql
2、进入该目录:
./configure
make
make install
如果想指定目录,那么使用--prefix选项,假如想安装在/usr/pgsql目录,那么执行 ./configure --prefix=/usr/pgsql
二、初始化数据库集群
PostgreSQL把基于同一个安装实例的所有数据库称为集群(Database Cluster),实际就是初始化一个供数据库引擎使用的目录。
1、新建一个用户,一般都取名为postgres(如果取别的名字,后面会遇到各种麻烦,所以还是老老实实取这个名字为好)
useradd postgres #创建名为postgres的用户
passwd postgres #为postgres用户设置密码
然后编辑postgres的用户目录中的.bash_profile文件,位置是/home/postgres/.bash_profile,这是一个隐藏文件,找到
PATH= 这一行,在行末添加":/usr/pgsql/bin",注意,不包括引号。保存回到命令提示符时,执行source .bash_profile使配置文件立即生效。
修改这个配置文件主要是为了让PostgreSQL的各种命令处于shell的命令查找路径中,这样我们后面输入命令时,就可以不使用绝对路径了。
2、新建一个目录,并赋予权限
cd /usr/pgsql
mkdir data
chown -R postgres ./data
最后一句的意思是,把新建的data目录的拥有者置换为postgres用户,这样,postgres用户对data目录就拥有了足够的权限
3、使用该用户,初始化数据库集群
su - postgres
initdb -D /usr/pgsql/data
使用-U username,--username=username可以指定数据库超级用户的用户名。 缺省是运行 initdb 的用户的有效用户。
4、如果使用默认的postgres用户,那么默认该用户是没有密码的,需要执行下面的语句来添加密码
psql
alter user postgres with password '新密码';
记住,上一条语句的分号一定要输入,否则语句不被执行。
三、网络配置
PostgreSQL默认不支持通过TCP/IP访问,需要配置。
1、配置postgresql.conf,使PostgreSQL支持网络访问
该文件在上一步被初始化的data目录中,用编辑器打开,
找到#listen_addresses='localhost'这一行,去掉前面的#符号,把localhost改为*,即
listen_addresses='*',
找到#port=5432这一行,去掉前面的#符号,
找到#password_encryption = on这一行,去掉前面的#符号。
2、配置pg_hba.conf文件
在最后面,增加一行如下:
host all all 0.0.0.0 0.0.0.0 md5
四、启动数据库服务
使用postgres用户,执行 pg_ctl start -D /usr/pgsql/data -l logfile,即可启动服务,执行完毕后,可以使用ps命令查询到postgres进程。
备注:如果重装系统后,重装PostgreSQL数据库,如果Pg的主版本相同,那么可以直接使用保留下来的data目录,只要直接启动就可以,不用经过前面的初始化步骤了。到那时要注意,如果启动失败(ps命令看不到postgres进程,查看日志了解原因),那么很可能是copy的过程中,data目录的权限变了。此时只要把权限重新赋给postgres用户,就可以了。