PostgreSQL单机部署(CentOS7)

本文介绍Contos7上用yum部署PostgreSQL9.4的过程。

1. 安装PostgreSQL源

rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm

2. 执行安装命令

yum update
yum install postgresql94-server postgresql94-contrib

3. 验证是否安装成功

执行:

rpm -qa | grep postgres

结果:

postgresql94-9.4.10-1PGDG.rhel7.x86_64
postgresql94-server-9.4.10-1PGDG.rhel7.x86_64
postgresql94-libs-9.4.10-1PGDG.rhel7.x86_64
postgresql94-contrib-9.4.10-1PGDG.rhel7.x86_64

说明安装成功

4. 初始化数据库

先创建数据存放目录:

mkdir -p /opt/pgsql/data

赋予postgres用户该目录的权限:

chown postgres /opt/pgsql/data

切换到postgres用户:

su postgres

执行初始化:

initdb -D /opt/pgsql/data

注:

-D 后面是数据库文件存放的目录,如果不指定则默认在/var/lib/pgsql/9.4/data下

初始化的日志如下:

属于此数据库系统的文件宿主为用户 "postgres".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"
禁止为数据页生成校验和.
修复已存在目录 /opt/pgsql/data 的权限 ... 成功
正在创建子目录 ... 成功
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择动态共享内存实现 ......posix
创建配置文件 ... 成功
在 /opt/pgsql/data/base/1 中创建 template1 数据库 ... 成功
初始化 pg_authid ... 成功
初始化dependencies ... 成功
创建系统视图 ... 成功
正在加载系统对象描述 ...成功
创建(字符集)校对规则 ... 成功
创建字符集转换 ... 成功
正在创建字典 ... 成功
对内建对象设置权限 ... 成功
创建信息模式 ... 成功
正在装载PL/pgSQL服务器端编程语言...成功
清理数据库 template1 ... 成功
拷贝 template1 到 template0 ... 成功
拷贝 template1 到 template0 ... 成功
同步数据到磁盘...成功
成功. 您现在可以用下面的命令运行数据库服务器:
/usr/pgsql-9.4/bin/postmaster -D /opt/pgsql/data/
或者
/usr/pgsql-9.4/bin/pg_ctl -D /opt/pgsql/data/ -l logfile start

5. 启动服务

1.切换到postgres用户

su postgres

这个步骤同样必须以PostgreSQL用户帐户登录来做。

2.启动服务

没有-D选项,服务器将使用环境变量PGDATA命名的目录; 如果这个环境变量也没有,将导致失败。通常,最好在后台启动postgres,使用下面的 Unix shell 语法:

pg_ctl -D /opt/pgsql/data/ -l logfile start

3.设置开机自动启动

在Linux系统里,要么往/etc/rc.d/rc.local或 /etc/rc.local文件里加上下面几行:

/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data

6. 创建用户

PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。另外,我们也可以把一个角色的成员 权限赋予其它角色,这样就允许成员角色使用分配给另一个角色的权限。
角色的概念替换了”用户”和”组”。在PostgreSQL 版本 8.1 之前,用户和组是独立类型的记录,但现在它们只是角色。 任何角色都可以是一个用户、一个组、或者两者。

数据库角色从概念上与操作系统用户是完全无关的。在实际使用中把它们对应起来可能比较方便, 但这不是必须的。数据库角色在整个数据库集群中是全局的(而不是每个库不同)。 要创建一个角色,使用 SQL 命令CREATE ROLE执行:

CREATE ROLE name;

name遵循 SQL 标识的规则:要么完全没有特殊字符, 要么用双引号包围(实际上你通常会给命令增加额外的选项,比如LOGIN。 下面显示更多细节)。要删除一个现有角色,使用类似的DROP ROLE命令:

DROP ROLE name;

为了方便,程序createuserdropuser 提供了对了这些 SQL 命令的封装。我们可以在 shell 命令上直接调用它们:

直接在shell里输入:

createuser lbd;

这样就创建了lbd这个角色。

dropuser lbd;

这样就创建了lbd这个角色。

要检查现有角色的集合,可以检查pg_roles系统表,比如:

SELECT rolname FROM pg_roles;

结果如下:

postgres=# SELECT rolname FROM pg_roles;
rolname
----------
postgres
lbd
(2 行记录)

psql的元命令\du
也可以用于列出现有角色。

结果如下:

postgres=# \du
角色列表
角色名称 | 属性 | 成员属于
---------+----------------------------------+----------
lbd | | {}
postgres| 超级用户, 建立角色, 建立 DB, 复制 | {}

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :