安装前准备
yum install readline-devel zlib-devel
下载源码并解压、编译安装
wget https://ftp.postgresql.org/pub/source/v9.4.1/postgresql-9.4.1.tar.bz2
tar -xjvf postgresql-9.4.1.tar.bz2
cd postgresql-9.4.1
./configure --prefix=/home/hadoop/pgsql
make
make install
注明:这里为了省事直接使用用户hadoop进行操作。最好单独建立一个用户,如:postgres
建立好database cluster目标文件夹
mkdir -p /home/hadoop/pgsql/data
环境变量设置
vim /etc/profile
# postgres
PGDATA=/home/hadoop/pgsql/data
PATH=$PATH:/home/hadoop/pgsql/bin
export PGDATA PATH
让环境变量生效
source /etc/profile
初始化数据库(指定PGDATA后可以不用-D参数)
pg_ctl initdb
否则需要:
initdb -D /home/hadoop/pgsql/data
结果:
The files belonging to this database system will be owned by user "hadoop".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /home/hadoop/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
creating template1 database in /home/hadoop/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
/home/hadoop/pgsql/bin/postgres -D /home/hadoop/pgsql/data
or
/home/hadoop/pgsql/bin/pg_ctl -D /home/hadoop/pgsql/data -l logfile start
启动数据库实例 ,开启服务
mkdir /home/hadoop/pgsql/log-history # 记录日志
pg_ctl -D /home/hadoop/pgsql/data -l /home/hadoop/pgsql/log-history/logfile start
关闭数据库实例
pg_ctl stop
开启远程连接
修改:
cd /home/hadoop/pgsql/data
vim pg_hba.conf # hba = host based authentication
# IPv4 local connections:
host all all 0.0.0.0/0 trust
为了打开PostgreSql Server的外部访问,需要向文件末尾添加内容。例如:假如我们安装PostgreSql Server的服务器IP地址是192.168.66.23,我们希望该子网内(即IP为192.168.66.*)所有计算机都能连接这台PostgreSql Server,并且都需要用户名/密码登录,则可以添加如下行:
host all all 192.168.66.1/24 md5
这个例子中,“192.168.66.1/24”表示允许所有IP为“192.168.66.”的计算机对服务器进行访问,“24”即IP的掩码有24个二进制的“1”,就是子网掩码的概念;例如,如果我们希望所有IP为“192.168.*.*”的计算机对服务器进行访问,则可以写为“192.168.1.1/16”。
第一个all表示允许访问所有数据库,第二个all表示允许所有用户名的用户登录;这两个域的设置可以参阅该文件前面长长的说明内容,本文不再赘述。
最后的md5表示用加密后的密码进行用户名/密码匹配的认证,这里的“用户名”是指数据库的用户,而不是操作系统的用户。常用的几种其他认证方式有ident(与操作系统的用户名做映射,采用操作系统的认证,数据库用户与操作系统用户之间的映射在pg_ident.conf文件中配置)、password(在网络传送明文密码认证,不安全)、trust(完全信任)、peer(取客户端操作系统的用户名,一般仅用来做本地连接)。
通常,采用数据库用户的用户名和密码进行认证,即md5。
继续修改:
vim postgresql.conf
listen_addresses = '*' # 修改该行为监听所有地址的请求
配置防火墙
su - root
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT
service iptables restart
或者直接关闭:
/etc/init.d/iptables status
chkconfig iptables off #永久关闭,重启生效
/etc/init.d/iptables stop #当前关闭
系统服务(用root权限):
复制postgresql安装目录下的linux文件到/etc/init.d/,进入postgresql 的安装目录(即刚刚使用tar命令解压的目录):
cd postgresql-9.4.1
cp contrib/start-scripts/linux /etc/init.d/postgresql
vim /etc/init.d/postgresql
修改如下:
# 修改prefix
prefix = /home/hadoop/pgsql
# 修改PGDATA
PGDATA="/home/hadoop/pgsql/data"
# 修改PGUSER
PGUSER=hadoop
# 修改PGLOG
PGLOG="$PGDATA/log-history"
添加执行权限:
chmod +x /etc/init.d/postgresql
这样,还可以通过系统命令开启和关闭postgresql服务(需要root权限):
/etc/init.d/postgresql start
/etc/init.d/postgresql stop
还可以配置如下设置:
让数据库开机启动
chkconfig --add postgresql
chkconfig postgresql on
创建数据库操作历史记录文件
touch /home/hadoop/pgsql/.pgsql_history
chown postgres:postgres /home/hadoop/pgsql/.pgsql_history
综上,搭建完成。
测试(切换到PGUSER用户下,这里是hadoop用户),创建一个新数据库,并打开:
createdb test
psql test
\l # 查看所有数据库
\q # 退出
下面配置PgAdmin。
使用psql命令行界面设置postgres用户的密码:
psql test
test=#ALTER USER hadoop with password ‘hadoop‘;
ALTER ROLE
postgres=#\q
上面test=#
表示目前进入PostgreSql Server的是超级用户,否则是test=\
形式。
这样,PostgreSql Server具备了一个超级用户hadoop,其密码是hadoop。可以从远程用各种客户端工具连接这台服务器了。