千家信息网

Postgresql服务部署

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。os:centos6.5 x64ip:192.168.85
千家信息网最后更新 2024年11月26日Postgresql服务部署

PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。
os:centos6.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$ psqlpsql (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 ROLEpostgres=# 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 DATABASEpostgres=# \c testdb;您现在已经连线到数据库 "testdb",用户 "postgres".testdb=#

1.6、创建测试表

testdb=#  create table test (id integer, name text);CREATE TABLEtestdb=# insert into test values(1,'lansgg');INSERT 0 1testdb=# 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.confhost    all             all             127.0.0.1/32            identhost    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 ... okcreating subdirectories ... okselecting default max_connections ... 100selecting default shared_buffers ... 32MBcreating configuration files ... okcreating template1 database in /usr/local/pgsql/data/base/1 ... okinitializing pg_authid ... okinitializing dependencies ... okcreating system views ... okloading system objects' descriptions ... okcreating collations ... okcreating conversions ... okcreating dictionaries ... oksetting privileges on built-in objects ... okcreating information schema ... okloading PL/pgSQL server-side language ... okvacuuming database template1 ... okcopying template1 to template0 ... okcopying template1 to postgres ... okWARNING: enabling "trust" authentication for local connectionsYou 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/dataor    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start-bash-4.1$

1.3、添加到系统服务

-bash-4.1$ exitlogout[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 startStarting 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$ psqlpsql (9.2.4)Type "help" for help.postgres=# create database testdb;CREATE DATABASEpostgres=# \c testdb;You are now connected to database "testdb" as user "postgres".testdb=# create table test(id int,name text,age int);CREATE TABLEtestdb=# \d test     Table "public.test" Column |  Type   | Modifiers --------+---------+----------- id     | integer |  name   | text    |  age    | integer | testdb=# insert into test values(1,'lansgg',25);INSERT 0 1testdb=# 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,否则删除时会提示"不能删除一个模板数据库"

0