您的位置:首页 > 运维架构 > Linux

centos6.5 搭建postgresql小结

2015-10-14 16:22 661 查看
安装前准备

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。可以从远程用各种客户端工具连接这台服务器了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: