若使用 CentOS 官方软件源的版本,直接使用下面的命令即可:
yum update
yum install postgresql postgresql-server
但是,官方的源可能并不会提供最新版本的 postgresql 软件,所以,本文并不是使用 CentOS 官方的软件源安装,而是使用 postgresql 官方提供的 yum 源来安装最新版本的软件,在我写这篇文章时(也就是我服务器上安装的版本)为 postgresql 9.4。
安装 postgresql
访问 PostgreSQL Repository 下载页面,根据自己服务器系统的版本选择添加适合自己的软件源。
对于 CentOS 6.x 32位 系统:
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-i386/pgdg-centos94-9.4-1.noarch.rpm
对于 CentOS 6.x 64位 系统:
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
对于 CentOS 7 64位 系统
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
使用下面的命令更新软件列表:
yum update
到现在为止,已经可以使用下面的命令安装 postgresql 了:
yum install postgresql94-server postgresql94-contrib
接着使用下面的命令初始化数据库:
在 CentOS 6.x 系统上:
service postgresql-9.4 initdb
在 CentOS 7.x 系统上:
/usr/pgsql-9.4/bin/postgresql94-setup initdb
接系统 postgresql 服务,并让其在每一次系统启动时,自动启动服务:
在 CentOS 6.x 系统上:
service postgresql-9.4 start
chkconfig postgresql-9.4 on
在 CentOS 7.x 系统上:
systemctl enable postgresql-9.4
systemctl start postgresql-9.4
调整 iptables 与 firewall
调整 iptables 与 防火墙设置以让数据库服务器可以被远程系统访问。
在 CentOS 6.x 系统上:
vi /etc/sysconfig/iptables
添加下面这些行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
保存,然后重启 iptables 服务:
service iptables restarton
在 CentOS 7.x 系统上:
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
访问 PostgreSQL 命令提示符
默认的数据库名称与数据库用户名均为 postgres,通过 postgres 用户进行一些 postgresql 相关的操作:
su - postgres
要登录到 postgresql 服务器,输入下面这个命令:
psql
您会得到类似下面这样的提示符:
psql (9.4.0)
Type "help" for help.
postgres=#
输入 \q 退出 postgresql 命令提示符界面。
设置 postgres 用户的密码
通过下面命令登录到 postgresql 命令提示符:
su - postgres
psql
接着通过下面的命令设置 postgres 用户的密码:
postgres=# \password postgres
Enter new password:
Enter it again:
postgres=# \q
要安装 PostgreSQL Adminpack,在 postgresql 命令提示符界面下输入下面命令:
postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION
创建新用户与数据库
作为示例,我们现在添加一个名为 eric 的用户,其密码为 password,然后再添加一个数据库,其名为 eric_db。
su - postgres
创建用户 eric:
$ createuser eric
创建 eric_db 数据库:
$ createdb --encoding=UTF8 eric_db
现在登录至 psql 命令行,设置密码,并授予 eric 访问 eric_db 的权限:
$ psql
psql (9.4.0)
Type "help" for help.
postgres=# alter user eric with encrypted password 'password';
ALTER ROLE
postgres=# grant all privileges on database eric_db to eric;
GRANT
postgres=#
删除用户与数据库
su - postgres
输入下面命令删除数据库:
$ dropdb <database-name>
输入下面命令删除用户:
$ dropuser <user-name>
配置 PostgreSQL-MD5 方式验证
MD5 验证 提供了一种以 Md5 方式加密密码的密码验证方式,要使用该功能,需要编辑 /var/lib/pgsql/9.4/data/pg_hba.conf 文件:
vi /var/lib/pgsql/9.4/data/pg_hba.conf
编辑或者修改下面这些行:
[...]
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 md5
[...]
使用下面的命令重启 postgresql 服务以更新配置文件:
在 CentOS 6.X 系统上:
service postgresql-9.4 restart
d CentOS 7 系统上:
systemctl restart postgresql-9.4
配置 PostgreSQL TCP/IP
默认的,TCP/IP 是关闭的,所以,若用户地人另外的服务器访问某台 postgresql 数据库服务器是不被允许的,若要启用该功能,您需要编辑 /var/lib/pgsql/9.4/data/postgresql.conf 文件:
vi /var/lib/pgsql/9.4/data/postgresql.conf
找到下面这些行:
[...]
#listen_addresses = 'localhost'
[...]
#port = 5432
[...]
取消注释,然后将 localhost 修改为您将允许的客户端IP地址,若要允许所有的客户端的联系,则使用 \* 即可:
listen_addresses = '*'
port = 5432
使用下面的命令重启 postgresql 服务以更新配置文件:
在 CentOS 6.X 系统上:
service postgresql-9.4 restart
d CentOS 7 系统上:
systemctl restart postgresql-9.4