标签 postgresql 下的文章

若使用 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

调整 iptablesfirewall

调整 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