CentOS 6.5下PostgreSQL服务部署

树叶云

PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。

os:CentOS 6.5 x64
ip:192.168.85.130
hostname: vm2.lansgg.com
pg 版本:postgresql-9.2.4.tar.bz2

一、yum安装
二、源码安装
三、系统数据库

1、yum安装
[root@vm2 ~]# wget 
[root@vm2 ~]# rpm -vhi pgdg-RedHat92-9.2-8.noarch.rpm
[root@vm2 ~]# yum install postgresql92-server postgresql92-contrib -y

1.2、初始化并启动数据库
[root@vm2 ~]# /etc/init.d/postgresql-9.2 initdb
正在初始化数据库:                                        [确定]
[root@vm2 ~]# /etc/init.d/postgresql-9.2 start
启动 postgresql-9.2 服务:                                [确定]

[root@vm2 ~]# echo “PATH=/usr/pgsql-9.2/bin:$PATH” >> /etc/profile
[root@vm2 ~]# echo “export PATH” >> /etc/profile

1.3、测试
[root@vm2 ~]# su – postgres
-bash-4.1$ psql
psql (9.2.19)
输入 “help” 来获取帮助信息.
 
postgres=# \l
                                    资料库列表
  名称    |  拥有者  | 字元编码 |  校对规则  |    Ctype    |      存取权限       
———–+———-+———-+————-+————-+———————–
 postgres  | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
          |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
          |          |          |            |            | postgres=CTc/postgres
(3 行记录)
 
postgres=#

1.4、修改管理员密码

修改PostgreSQL 数据库用户postgres的密码(注意不是linux系统帐号)
PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’。
postgres=# select * from pg_shadow;
 usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig 
———-+———-+————-+———-+———–+———+——–+———-+———–
 postgres |      10 | t          | t        | t        | t      |        |          | 
(1 行记录)
 
postgres=#  ALTER USER postgres WITH PASSWORD ‘postgres’;
ALTER ROLE
postgres=# select * from pg_shadow;
 usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl |              passwd                | valuntil | useconfig 
———-+———-+————-+———-+———–+———+————————————-+———-+———–
 postgres |      10 | t          | t        | t        | t      | md53175bce1d3201d16594cebf9d7eb3f9d |          | 
(1 行记录)
 
postgres=#

1.5、创建测试数据库
postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb;
您现在已经连线到数据库 “testdb”,用户 “postgres”.
testdb=#

1.6、创建测试表
testdb=#  create table test (id integer, name text);
CREATE TABLE
testdb=# insert into test values(1,’lansgg’);
INSERT 0 1
testdb=# select * from test;
 id |  name 
—-+——–
  1 | lansgg
(1 行记录)

1.7、查看表结构
testdb=# \d test;
  资料表 “public.test”
 栏位 |  型别  | 修饰词 
——+———+——–
 id  | integer | 
 name | text    |

1.8、修改PostgresSQL 数据库配置实现远程访问
修改postgresql.conf 文件
如果想让PostgreSQL 监听整个网络的话,将listen_addresses 前的#去掉,并将 listen_addresses = ‘localhost’ 改成 listen_addresses = ‘*’
修改客户端认证配置文件pg_hba.conf
[root@vm2 ~]# vim /var/lib/pgsql/9.2/data/pg_hba.conf
host    all            all            127.0.0.1/32            ident
host    all            all            all                    md5

[root@vm2 ~]# /etc/init.d/postgresql-9.2 restart
停止 postgresql-9.2 服务:                                [确定]
启动 postgresql-9.2 服务:                                [确定]
[root@vm2 ~]#

2、源码安装
停止上面yum安装的pgsql服务,下载PostgreSQL 源码包
[root@vm2 ~]# /etc/init.d/postgresql-9.2 stop
停止 postgresql-9.2 服务:                                [确定]
[root@vm2 ~]# wget 
[root@vm2 ~]# tar jxvf postgresql-9.2.4.tar.bz2
[root@vm2 ~]# cd postgresql-9.2.4

查看INSTALL 文件
more INSTALL
INSTALL 文件中Short Version 部分解释了如何安装PostgreSQL 的命令,Requirements 部分描述了安装PostgreSQL 所依赖的lib,比较长,先configure 试一下,如果出现error,那么需要检查是否满足了Requirements 的要求。
开始编译安装PostgreSQL 数据库。
[root@vm2 postgresql-9.2.4]# ./configure
[root@vm2 postgresql-9.2.4]# gmake
[root@vm2 postgresql-9.2.4]# gmake install
[root@vm2 postgresql-9.2.4]# echo “PGHOME=/usr/local/pgsql” >> /etc/profile
[root@vm2 postgresql-9.2.4]# echo “export PGHOME” >> /etc/profile
[root@vm2 postgresql-9.2.4]# echo “PGDATA=/usr/local/pgsql/data” >> /etc/profile
[root@vm2 postgresql-9.2.4]# echo “export PGDATA” >> /etc/profile
[root@vm2 postgresql-9.2.4]# echo “PATH=$PGHOME/bin:$PATH” >> /etc/profile
[root@vm2 postgresql-9.2.4]# echo “export PATH” >> /etc/profile
[root@vm2 postgresql-9.2.4]# source /etc/profile
[root@vm2 postgresql-9.2.4]#

2.2、初始化数据库
useradd -d /opt/postgres postgres              ######如果没有此账户就创建,前面yum安装的时候已经替我们创建了
[root@vm2 postgresql-9.2.4]# mkdir /usr/local/pgsql/data
[root@vm2 postgresql-9.2.4]# chown postgres.postgres /usr/local/pgsql/data/
[root@vm2 postgresql-9.2.4]# su – postgres
 
-bash-4.1$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
The files belonging to this database system will be owned by user “postgres”.
This user must also own the server process.
 
The database cluster will be initialized with locale “zh_CN.UTF-8”.
The default database encoding has accordingly been set to “UTF8”.
initdb: could not find suitable text search configuration for locale “zh_CN.UTF-8”
The default text search configuration will be set to “simple”.
 
fixing permissions on existing directory /usr/local/pgsql/data … ok
creating subdirectories … ok
selecting default max_connections … 100
selecting default shared_buffers … 32MB
creating configuration files … ok
creating template1 database in /usr/local/pgsql/data/base/1 … ok
initializing pg_authid … ok
initializing dependencies … ok
creating system views … ok
loading system objects’ descriptions … ok
creating collations … ok
creating conversions … ok
creating dictionaries … ok
setting privileges on built-in objects … ok
creating information schema … ok
loading PL/pgSQL server-side language … ok
vacuuming database template1 … ok
copying template1 to template0 … ok
copying template1 to postgres … ok
 
WARNING: enabling “trust” authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
–auth-local and –auth-host, the next time you run initdb.
 
Success. You can now start the database server using:
 
    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
or
    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
 
-bash-4.1$

1.3、添加到系统服务
-bash-4.1$ exit
logout
[root@vm2 postgresql-9.2.4]#  cp /root/postgresql-9.2.4/contrib/start-scripts/linux /etc/init.d/postgresql
[root@vm2 postgresql-9.2.4]# chmod +x /etc/init.d/postgresql
[root@vm2 postgresql-9.2.4]# /etc/init.d/postgresql start
Starting PostgreSQL: ok
[root@vm2 postgresql-9.2.4]# chkconfig –add postgresql
[root@vm2 postgresql-9.2.4]# chkconfig postgresql on
[root@vm2 postgresql-9.2.4]#

1.4、测试使用
[root@vm2 postgresql-9.2.4]# su – postgres
-bash-4.1$ psql -l
                                  List of databases
  Name    |  Owner  | Encoding |  Collate  |    Ctype    |  Access privileges   
———–+———-+———-+————-+————-+———————–
 postgres  | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
          |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8    | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
          |          |          |            |            | postgres=CTc/postgres
(3 rows)
 
-bash-4.1$ psql
psql (9.2.4)
Type “help” for help.
 
postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb;
You are now connected to database “testdb” as user “postgres”.
testdb=# create table test(id int,name text,age int);
CREATE TABLE
testdb=# \d test
    Table “public.test”
 Column |  Type  | Modifiers 
——–+———+———–
 id    | integer | 
 name  | text    | 
 age    | integer | 
 
testdb=# insert into test values(1,’lansgg’,25);
INSERT 0 1
testdb=# select * from test;
 id |  name  | age 
—-+——–+—–
  1 | lansgg |  25
(1 row)
 
testdb=#

3、系统数据库

在创建数据集簇之后,该集簇中默认包含三个系统数据库template1、template0和postgres。其中template0和postgres都是在初始化过程中从template1拷贝而来的。

template1和template0数据库用于创建数据库。PostgreSQL中采用从模板数据库复制的方式来创建新的数据库,在创建数据库的命令中可以用“-T”选项来指定以哪个数据库为模板来创建新数据库。

template1数据库是创建数据库命令默认的模板,也就是说通过不带“-T”选项的命令创建的用户数据库是和template1一模一样的。template1是可以修改的,如果对template1进行了修改,那么在修改之后创建的用户数据库中也能体现出这些修改的结果。template1的存在允许用户可以制作一个自定义的模板数据库,在其中用户可以创建一些应用需要的表、数据、索引等,在日后需要多次创建相同内容的数据库时,都可以用template1作为模板生成。

由于template1的内容有可能被用户修改,因此为了满足用户创建一个“干净”数据库的需求,PostgreSQL提供了template0数据库作为最初始的备份数据,当需要时可以用template0作为模板生成“干净”的数据库。

而第三个初始数据库postgres用于给初始用户提供一个可连接的数据库,就像Linux系统中一个用户的主目录一样。

上述系统数据库都是可以删除的,但是两个模板数据库在删除之前必须将其在pg_database中元组的datistemplate属性改为FALSE,否则删除时会提示“不能删除一个模板数据库”

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/220885.html<

(0)
运维的头像运维
上一篇2025-04-14 18:54
下一篇 2025-04-14 18:56

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注