CentOS6.x下安装PostgreSQL9.3笔记

1. 安装

1.1 首先确认我们的操作系统版本:

cat /etc/redhat-release

1.2 然后安装与系统版本匹配的PG源:

yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm

当然我们也可以根据需要在 http://yum.postgresql.org/repopackages.php下寻找与系统匹配的源。

1.3 成功安装PG源以后,我们就可以通过yum直接安装PG相关的服务了

yum install postgresql93-server 
yum install postgresql93-contrib #PG的一些扩展支持 
/usr/pgsql-9.3/bin/postgresql93-setup initdb #初始化数据库 
service postgresql-9.3 start 
chkconfig postgresql-9.3 on #开机自动运行

2. 配置

用Yum方式安装的PG,默认路径为:/var/lib/pgsql/9.3/ 下,  一般会设计到如下几个配置文件的修改

2.1 数据库路径

缺省安装的数据库路径为”/var/lib/pgsql/9.3/data”,默认路径是包含了版本号的,这样是为了防止不同版本间数据兼容的问题,避免数据库升级的同时而忘记了数据必要的迁移工作。

一般来说为了管理的方便,我更愿意重新指定一个新的数据库存储路径。

如果需要变更数据库的路径话,可以修改”/var/lib/pgsql/9.3/data/postgresql.conf“中的“data_directory”。

2.2 如何让PG监听全网链接

配置文件: /var/lib/pgsql/9.3/data/postgresql.conf

listen_address = ‘localhost’ 修改为 listen_address = ‘*’

2.3 用户访问权限配置

配置文件: /var/lib/pgsql/9.3/data/pg_hba.conf

打开配置文件,我们可以配置项主要有5项构成:TYPE, DATABASE,USER,ADDRESS,METHOD,从文件的说明和配置样例上不难理解。

TYPE,一般主要常用的两项:

“local” 为本地链接请求(unix套接字方式),”host” TCP/IP链接方式。

另外简要说明一下PG目前支持的几种常用的验证方法(METHOD):

  • peer 验证完全依赖当前操作系统,用户名即为当前操作系统的用户名,只适用于本地用户验证。
  • ident 和peer类似,信任操作系统的验证,且支持TCP/IP链接,如果是本机用户的本地链接,会自动切换到peer模式
  • trust 无条件的允许链接,任何人使用任何用户都可登录任意数据库。一般这种方式常用于对 127.0.0.1 本地的链接,适用于服务器上只有单一用户,或者是可信用户(例如一个开发团队)。
  • reject 无条件拒绝链接,一般用于过滤掉指定网段的访问。
  • md5 要求用户提供MD5加密的口令进行认证。
  • password 要求用户提供一个明文密码进行认证。

按默认的配置文件,在本机上我们一般需要切换到postgres用户(su postgres),才能链接数据库。

su postgres psql

为了本机调试方便,我们可以添加(或修改)配置为 trust 方式:

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust

然后就可以通过 psql -U 的方式登录了,例如 psql -Upostgres

修改配置后别忘了重启服务才能生效:service postgresql-9.3 restart

2.4 创建一个用户

虽然trust认证方式很方便,但为了应用访问的方便以及安全考虑,一般我们会为不用的应用创建不同访问权限的用户

CREATE USER dbuser WITH PASSWORD 'password'; 
CREATE DATABASE exampledb OWNER dbuser; #创建一个数据库并指定用户所有权 
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser; #将某数据所有操作权限赋予某个用户

同时也需要修改pg_hba.conf

 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all dbuser password local all all trust

3. 常用命令

3.1 控制台命令

?:帮助,列出所有命令
\q: 退出终端
\h:查看SQL命令的解释,比如\h select
\l:列出所有数据库
\d:列出当前数据库的所有表
\c [database_name]:连接其他数据库
\d [table_name]:查看一张表的结构
\du:列出所有用户
\conninfo:列出当前数据库的连接信息。

3.2 常用SQL命令

创建数据库:CREATE DATABASE db_name;

删除数据库:DROP DATABASE db_name;