声明:发现文档不错,转发IT168文档,如有问题,请与我联系,感谢。
【IT168 专稿】PostgreSQL是一套功能强大的对象-关系型数据库管理系统。经过十几年的发展, PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统, 它提供了多版本并行控制,支持几乎所有 SQL 构件(包括子查询,事务和用户定义类型和函数), 并且可以获得非常广阔范围的(开发)语言绑定 (包括 C,C++,Java,perl,tcl,和 python)。本文介绍的是其在windows系统下的安装过程。
一般说来,一个现代的与 Unix 兼容的平台应该就能运行 PostgreSQL。而如果在windows系统下安装,你需要 Cygwin 和cygipc 包。另外,如果要制作服务器端编程语言 PL/Perl,则还需要完整的Perl安装,包括 libperl 库和头文件。
在磁盘支持方面,需要65MB左右用于存放安装过程中的源码和大约15 MB的空间用于存放安装目录;一个空数据库大概需要25MB;然后在使用过程中大概需要在一个平面文本文件里存放同等数据量数据五倍的空间存储数据,如果你要运行回归测试,还临时需要额外的90MB空间。
第一步:从网上下载基于windows的Cygwin安装程序,双击打开。
第二步:选择安装类型。由于我们已将安装程序下载到了本地硬盘,故选择第三项,然后单击“下一步”。
第三步:选择安装路径。一般按其默认即可。
第四步:选择下载文件包在本机存放路径。请根据实际选择。
接着会提示选择连接类型、下载站点、选择安装包(需要确定加上:cygrunsrv (category Admin) 、postgresql (category Database)),之后便开始下载包并安装cygwin了。
第一步:将cygserver 安装成NT服务并启动
a.运行脚本:$ /usr/bin/cygserver-config
b.在win2003中设置环境变量:CYGWIN=server
c.重启win2003
第二步:在win2003的DOS状态下,按下图所示新建用户帐户及密码
第三步:在系统所在分区新建一文件夹
例如:D:\cygwin\home\postgres
第四步:更新文件: /etc/passwd
使用命令:mkpasswd -l -u postgres >> /etc/passwd
解释: 向/etc/passwd文件中加入用户postgres的信息
第五步:新建存放数据的目录并设置postgres为该目录的所有者
mkdir /usr/share/postgresql/data
chown postgres /usr/share/postgresql
chown postgres /usr/share/postgresql/data
第六步:配置用户权限
在运行框内输入“secpol.msc”打开“本地安全设置”窗口,依次点击“本地策略”-“用户权限分配”,在右边窗口里找到“作为服务登录”,双击打开。
在出现的窗口里单击“添加用户或组”添加一个名为“postgres”的用户。
第七步:初始化数据区域
注销原来的用户,改用postgres进入win2003后运行如下命令:
initdb –d /var/postgresql/data
注意:PostgreSQL安装程序只能在NTFS分区中完成数据库的初始化工作,而PostgreSQL服务器程序自身和一些工具程序可以安装在任何分区中。如果为FAT分区格式,可以正常安装PostgreSQL,但不要进行数据库的初始化工作,只能待在安装完成后,在FAT分区上手动执行initdb.exe程序来进行,但安全性和可靠性就不能保证了,要想建立表空间也会失败。
第八步:将postmaster(PostgreSQL的服务器)安装成NT服务并启动
使用命令: cygrunsrv –I postmaster –p /usr/bin/postmaster –a “-d
/usr/share/postgresql/data –I” –y cygserver –s int –u postgres -o
命令解释:
-I postmaster:新建一个名为postmaster的服务。
-p /usr/bin/postmaster:应用程序路径为/usr/bin/postmaster。
-a"-D /usr/share/postgresql/data -i":
postmaster 将目录 /usr/share/postgresql/data 做为数据目录,必须设置“-i”(TCP/IP 连接) 和“-D”参数。
-y cygserver:指明postmaster依赖于cygserver
-s int:发送信号 INT when terminated is run by the user (-u) postgres
-o :在系统退出时停止服务
注:更详细的参数说明可以使用命令:“cygrunsrv -h”以及“postmaster –help”
之后Cygrunsrv 将会让你输入两次密码。
OK,经过以上配置后,即可使用命令“psql –u postgres template1”登录postgresql数据库了。
注:“template1”是Postgresql在初始化时自动创建的测试数据库。
Windows下PostgreSQL 8.1版安装图解一
现在谈起免费数据库,大多数人首先想到的可能是mysql,的确MySQL目前已经应用在国内很多领域,尤其是网站架设方面。但是,实际上功能最强大、特性最丰富和最复杂的免费数据库应该是PostgreSQL。它的很多特性正是当今许多商业数据库例如Oracle、DB2等的前身。
其实笔者最近也是因为项目需要,接触了一点PostgreSQL的皮毛,最近PostgreSQL又刚发布了8.1版本,笔者结合网上各位高手的经验谈一点自己的安装心得,和才开始接触PostgreSQL的新手朋友共同学习。
从PostgreSQL 8.0开始,就已经正式支持Windows了,在这之前,如果你想在Windows上安装PostgreSQL,要借助于Cygwin等模拟Unix环境的工具来实现,因此在稳定性和性能上都要低于Linux上安装版本。废话少说,让我们转入正题。
下载PostgreSQL for Windows
登录http://www.postgresql.org/FTP/binary/v8.1.0/win32/,下载最新版:postgresql-8.1.0-1.zip,文件大小为20.4M,支持多语言安装。
开始安装
下载安装文件到本地后,先用解压缩工具把压缩包解开,然后像安装其他Windows应用程序一样,双击postgresql-8.1.msi就可以开始安装向导了。
首先是选择安装过程中使用的语言,笔者找了一边没有找到中文,只好选择还能看得懂得英文^_^。另外,你可以选择最下面得选项以把详细的安装日志写到当前安装目录,以备排查安装故障,也可以阅读一下了解它的安装过程。
选择安装语言
点下一步就是选择安装内容的选项了,其中分四大部分,分别是数据库服务器端、用户界面、数据库驱动和开发模块。你可以根据需要选择安装。笔者为了了解更多的东西,就把四部分全部装全了。另外此处要注意的是数据目录选项只能安装在NTFS格式的分区,如果你要安装在其他格式的分区的话,需要在安装完后,手动运行Initdb.exe。
选择安装选项1
选择安装选项2
小提示:如果你喜欢用图形界面来管理操作数据库得话,在用户界面里可以选择安装pgAdminIII。
接下来是服务配置,你可以把该数据库服务器作为Windows的一个系统服务运行,这也是Postgresql开始真正支持Windows安装的一个体现(如下图)。
选择安装为服务
在此设置服务名,还有运行该服务的Windows帐号。你可以输入一个已有帐号,也可以输入一个目前并不存在的帐号,让安装程序自动建立这个帐号。
自动创建帐号
创建帐号完毕后,就是要配置数据库的监听端口、连接许可,及本地区域和超级用户的设置了。(注意,我选择的是“中华人民共和国)这儿建立的超级帐号是数据库管理员用户,注意与前面的服务帐号区别。注意这个对话框只有你在上一步选择了让PostgreSQL作为一个系统服务运行才会出现。
初始化数据库设置
点击下一步后,会弹出一个远程连接的选项,提示本地连接数据库默认都可以被接受,但是如果想让远程计算机也能连接到数据库的话,你需要在安装完成后,单独设置pg_hba.conf文件,具体设置我们在后面再说明。
选择在默认创建的测试数据库template1中激活的过程语言,PL/perl需要ActiveState Perl 5.8的安装支持,PL/python则Python 2.3的支持,我这儿只选择了pgsql了。注意这个对话框只有你在选择了让PostgreSQL作为一个系统服务运行,并且选择了初始化数据库组件后才会出现。
选择过程语言
选择在测试数据库template1中激活的模块,所有的扩展文件都是会被安装上,这一步只是选择在你所有的数据库中默认激活哪些模块。这些扩展模块能提供一些增强的功能。
选择加载扩展模块
ok,至此安装配置参数就已经配完了,你只需要点下一步等待安装完成就可以了,PostgreSQL安装速度极快,根据机器不同时间略有不同。最后出现安装成功界面。
开始安装
安装结束界面
重新起动后,发现在开始菜单程序里多了PostgreSQL 8.1的程序组,并且在任务管理器了多了几个进程,如下图。
安装后程序菜单
安装后进程
客户端连接设置
PostgreSQL出于安全考虑,默认是拒绝所有远程客户端的连接的,如果你要想远程登录服务器端的话,需要设置pg_hba.conf,从开始菜单-->程序-->Postgresql 8.1-->configuration files中选择编辑pg_hba.conf。
编辑pg_hba.conf
修改为如下内容:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.9.226/32 md5
这样表示本机和192.168.9.226这台机器可以通过经过MD5加密的密码连接数据库。通过修改IP地址的掩码,也可以允许哪一个段的地址可以连接服务器。另外,认证方式MD5还可以改为trust,表示完全信任这个地址的连接(这一点在调试程序时比较方便)。改为passWord,表示通过密码连接,但是密码以明文方式发送。设置完后,需要重新启动PostgreSQL才能生效。
客户端连接测试
经过上面的安装和设置,一个最简单的PostgreSQL数据库服务器就已经建立起来了,接下来我们看看我们如何在这个数据库服务器上实现以下几个建达的任务:1.新建、删除一个数据库;2.新建、删除一个表。
通过上面的安装过程,有两种方式可以用来访问操作数据库。
通过psql to postgres方式
从开始菜单-->程序-->Postgresql 8.1-->psql to postgres,输入安装时指定的超级用户的密码,如下图
输入密码
输入密码后,进入命令行界面
psql操作界面
输入create database mydb;创建一个数据库mydb;通过drop database mydb删除不想要的数据库mydb;
通过create table myfirsttb(firstcol integer,secondcol text);创建一个表myfirsttb,通过drop table myfirsttb;删除表myfirsttb。
更多的命令请到http://www.pgsqldb.org查询相关文档。
通过图形化工具pgAdmin来管理数据库
从开始菜单-->程序-->Postgresql 8.1-->pgAdmin III,如下图
图形化界面
右键点击PostgreSQL Database Server 8.1(localhost:5432),点击连接(connect),由于我在pg_hba.conf中设置本地连接也要通过密码,弹出如下对话框。
输入超级用户的口令窗口
输入超级用户口令,进入图形化管理界面
图形化管理界面
在这儿你可以轻松直观的管理数据库,具体俺就不多说了。
另外通过其他的一些图像化管理工具也可以管理操作PostgreSQL数据库,例如用EMS PostgreSQL Manager (必须2.7以上版本才支持postgresql8.0以上版本)进行管理。
从安装过程来看,在Windows上安装PostgreSQL已经是一件很简单的事了,即时是像笔者一样新手也可以根据向导成功安装,你可以在没有管理权限的情况下进行安装。因为这是支持Windows(没有Cygwin)的PostgreSQL 版本,PostgreSQL 作为服务安装,在机器重启之后可以没有问题的启动。
PostgreSQL 的最小资源需求非常低。例如在远程连接的时候,打开网络浏览器和MS-Word ,可以看到在测试机器上面没有受到任何影响。
如果说到不足之处,由于使用PostgreSQL的用户还不像使用mysql的用户那么广泛,因此这方面网上交流的论坛还不是很活跃,对新手的入门是一个障碍。相信这一点也会逐渐改善。
你是否遇到过因为不小心而删除了某个数据库表,或者是存放数据库的磁盘损坏了的情况呢?如果碰到这种情况,我相信你会觉得非常的沮丧,因为你努力工作了几个星期的成果可能就付之东流了。 但是,你也不必每次都陷入这种困境。如果你将数据存放在 PostgreSQL 表中,你就可以定时的进行数据库备份,从而避免上述悲剧的发生。PostgreSQL 自带有内置工具来执行备份工作,而且在系统出现损坏或是意外时,你可以通过这些工具进行“回滚”,并通过以前保存的快照将系统恢复到其初始的状态。 数据备份 PostgreSQL 自带的内置备份工具叫做 pg_dump。这个工具是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。客户端到服务器端的连接是用于执行备份工作。这些备份文件就是前面所讲的快照并可以用于日后的数据恢复。而保证客户端与服务器端的连接是执行备份所必需的。 注意: 在进行上述工作之前,首先请确保你具有登录到服务器并访问你将要备份的数据库或表的权限。你可以通过使用PostgreSQL 命令行客户端——psql,进行服务器登录。在客户端中输入主机名(-h),用户名(-u)和密码(-p),以及数据库名,然后就可以校验你是否被授权访问。 使用 pg_dump 非常的简单——只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据你自己的安装路经更改PostgreSQL 路径): $ /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > test.bak 通过上面的命令就会创建一个名为test.bak的文件,文件中记录了用于恢复数据库的SQL命令。在这个文件中你可以看到类似于下面这个例子中所列出的内容: -- -- Name: pets; Type: TABLE; Schema: public; Owner: root; Tablespace: --
CREATE TABLE pets ( species character varying, name character varying );
ALTER TABLE public.pets OWNER TO root; -- -- Data for Name: pets; Type: TABLE DATA; Schema: public; Owner: root -- INSERT INTO pets (species, name) VALUES ('dog', 'Sparky'); INSERT INTO pets (species, name) VALUES ('cat', 'Tabitha'); 如果你希望对整个系统中所有的数据库进行备份的话(而不是只对某一个数据库进行备份),你可以使用命令pg_dumpall 而不是pg_dump。执行这个命令可以对PostgreSQL 所能识别的所有的数据库(包括其自身的系统数据库) 备份到一个文件中。下面给出了一个使用实例: $ /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > all.bak 为了保证你的备份时刻保持更新,你可以通过往cron table中加入pg_dump或者是pg_dumpall命令来定期执行备份工作。这里给出了两个cron entries的例子。第一个是在每天凌晨3点对test数据库进行备份,而第二个是在每个星期五的晚上9点对所有的数据库进行备份: 0 3 * * * /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > /disk2/test.bak0 21 * * 5 /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > /disk2/all.bak 数据恢复 从备份中恢复数据的工作比执行备份甚至更简单——你所要做的就是通过执行备份文件中的SQL命令来对数据库进行恢复。如果你是使用pg_dump对某一个数据库进行了备份,那么备份中就会有CREATE TABLE 的语句来对源表进行复制。当然,你首先要新创建一个空数据库来存放这些数据表。你可以使用createdb 这个工具来完成这一步工作,这个工具也是PostgreSQL 套件中的一部分: $ /usr/local/pgsql/bin/createdb restored 现在你就可以执行备份文件中的SQL命令来对数据库进行恢复了,如下例所示: $ /usr/local/pgsql/bin/psql -h localhost -U pgsql -d restored < test.bak 如果你是使用pg_dumpall对所有的数据库进行备份的,就没有必要先新建一个数据库,因为备份文件中已经包含了完成CREATE DATABASE工作的相关的调用。在这里,只需要在psql命令行客户端中输入对应的备份文件就可以了,而不需要指定目标数据库: $ /usr/local/pgsql/bin/psql -h localhost -U pgsql < all.bak 一旦数据恢复完成后,你就可以登录到服务器并查看到已恢复的数据。 |