PostgreSQL诞生在加州伯克利大学,从诞生到现在虽然已经有几十年的时间,应该也算是关系型数据库中的老成员了,但是PostgreSQL相比MySQL提供了很多扩展,开发人员可以根据项目需求为数据库开发一些插件,比如可以为数据库定义一些比较的范式,不仅仅是数字,日期和字符串的简单比较,大数据处理中一些距离:余弦距离、编辑距离、海明距离等都可以定义。另外,PostgreSQL还可以存储Json数据,并为之建立索引。
1.PostgreSQL安装(CenOS 6)
PostgreSQL官网提供了安装的步骤,可以少问度娘了。下面以postgresql 9.4,centos 6 64位系统为例:
yum install https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-2.noarch.rpm
yum install postgresql94*
yum install postgresql94-server
service postgresql-9.4 initdb
chkconfig postgresql-9.4 on
service postgresql-9.4 start
2.配置文件
按照上面的步骤,启动配置都是默认。/var/lib/pgsql/9.4/data目录下配置:
postgresql.conf:
把listen_addresses前面的注释去掉,改成listen_addresses = ‘*’
其他一些配置:
pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 10.0.0.0/8 trust
# IPv6 local connections:
host all all ::1/128 ident
表示10打头的网址都可以远程连接数据库,TYPE定义了多种连接PostgreSQL的方式,分别是:“local”使用本地unix套接字,“host”使用TCP/IP连接(包括SSL和非SSL),“host”结合“IPv4地址”使用IPv4方式,结合“IPv6地址”则使用IPv6方式,“hostssl”只能使用SSL TCP/IP连接,“hostnossl”不能使用SSL TCP/IP连接。md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。password是以明文密码传送给数据库,建议不要在生产环境中使用。
trust是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。reject是拒绝认证。
3.遇到的启动问题
PostgreSQL的启动日志在/var/lib/pgsql/9.4/pgstartup.log中,
Permissions should be u=rwx (0700).
data directory "/var/lib/pgsql/9.4/data" has group or world access
解决方法:
切换到 具有root权限的用户
cd /var/lib/pgsql/9.4
chown -R postgres:postgres data
chmod -R 0700 data
重启PostgreSQL 数据库,问题解决。