热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

在Windows系统上安装和运行PostgreSQL的常见问题

来源: 作者: 时间:2008-05-21 Tag: 点击:


 自已从源代码编译PostgreSQL怎么做?

在Windows下从源代码编译PostgreSQL的常见问题FAQ在FAQ_MINGW.html 里有编译过程的详细细节。

 运行PostgreSQL为何需要一个非管理员帐号?

当一个黑客利用一个软件的BUG进入一台计算机时,他就获得了这个软件运行所使用的用户帐号的权限。目前我们不知道PostgreSQL是否有这样的BUG,我们坚持使用非管理员帐号运行PostgreSQL的目的就是为了减少(万一)黑客利用在PostgreSQL发现的BUG可能对系统造成的损害。

在UNIX的世界中,这已是一个常见的习惯了(即不使用管理员帐号进入系统),在Windows世界中,微软和其他软件供应商们为了提高系统的安全性,也正开始逐渐将这一操作变成标准习惯。

Note, that with the release of PostgreSQL 8.2, it is possible to run under a administrative account. PostgreSQL 8.2 and above are able to irrevocably give up administrative rights at startup thus ensuring the rest of the system remains secure in the extremely unlikely event that PostgreSQL becomes compromised.

 可以将PostgreSQL安装在FAT分区吗?

PostgreSQL首要任务是保证数据的完整性。FAT和FAT32文件系统不能提供为达到这一目的的可靠性,而且FAT文件系统安全性的缺乏使得保护原始数据不被未经授权的更改无法保证,最后PostgreSQL使用一项“多分点(reparse points)”的功能来完成表空间功能,这一特性在FAT文件系统下也是无法实现的。

NTFS文件系统是一个日志式文件系统,提供了好得多的可靠性和恢复功能,而且它有较全面的存取控制功能,并提供PostgreSQL要用到的多分点功能。

基本上述原因,PostgreSQL安装程序只能在NTFS分区中完成数据库的初始化工作,而PostgreSQL服务器程序自身和一些工具程序可以安装在任何分区中。

然而也要看到,在一些系统中,特别是开发人员的电脑上,也许只有一种FAT分区,在这种情况下,你可以象正常情况下一样安装PostgreSQL,但不要进行数据库的初始化工作,在安装完成后,在FAT分区上手动执行initdb.exe程序,但安全性和可靠性就不能保证了,要想建立表空间也会失败。

 PostgreSQL需要什么样的文件系统权限?

PostgreSQL的运行帐号需要对PostgreSQL目录下及所有子目录的读权限,需要对数据目录的写权限,特别是这个帐号不应分配对一些含有二进制程序文件的目录除了读权限以外的任何权限(所有安装目录下的目录权限,安装程序均会自动设置好,所以除非你想改变什么设置,一般情况下,安装后没有任何权限设置问题)。

PostgreSQL还需要对系统DLL文件(如kernel32.dll和user32.dll以及其他DLL文件)的读权限, 默认这些权限是已分配的,但对CMD.exe程序的执行,在某些情况下会被锁定,需分配此权限。

如果你在一个多用户系统中运行 PostgreSQL,你应该移除非管理员对PostgreSQL目录的操作权限,没有一个用户需要任何处理PostgreSQL文件的权限,所有的通讯都是通过libpq连接来完成,直接存取PostgreSQL数据文件会导致数据不安全和系统的不稳定!


 为什么我不能选择Unicode编码?

在PostgreSQL 8.1及以后版本中,(UTF8)UNICODE编码在Windows平台上是完全支持的。

 我安装了一个非英文的语言,但所有的信息都显示为英文!

在安装时的语言选择只是选择了安装程序的语言,要改变PostgreSQL服务器提示信息的语言, 首先确认你已安装了自然语言支持(Natural language support)特性,然后编辑postgresql.conf文件来改变lc_messages的参数数值来选择你想要的语言。


 [译者添加]如何使用免安装版本完全手动安装?

以 Windows XP SP2 默认环境进行手动安装为例,其他版本未经测试。自8.2版本起,PostgreSQL应广大普通用户的要求,允许以管理员帐号直接执行手动安装所有步骤,所以就更方便了。

执行下列步骤前,暂作以下假定:

  • PostgreSQL拟装在d:\postgresql
  • 数据库以后拟存放在d:\postgresql\data


首先下载 postgresql-8.3.0-2-binaries-no-installer.zip 最新版待用(下载地址:ftp://ftp.cn.postgresql.org/pub/postgresql/binary/v8.3.0/win32/ ),下列步骤达到手工安装好PostgreSQL,初始化数据库,将PostgreSQL注册为服务。

1、PostgreSQL.zip解压至d:\postgresql后,创建一个data目录;

2、新开一个cmd窗口,并切换目录: cd d:\postgresql\bin ;

3、initdb -D d:\postgresql\data -E UTF8 --locale=C

4、pg_ctl register -D d:\postgresql\data -Npgsql 即将postgres注册为服务,服务名为pgsql;


以下为可选步骤了:

5、net start pgsql即可启动postgresql,进行后续工作了;

6、createdb -E UTF8 testdb,创建测试数据库

7、psql testdb 进入交互方式,直接操作数据库;

另上述第3步及6步为避免以后可能发生的亚州大字符集的乱码问题,统一使用UTF8。


 常见安装错误

 PostgreSQL与/或其安装程序在启动时崩溃、不能正常启动或是启动后挂起

目前针对这一现象最主要的原因是防病毒软件和防火墙软件造成的。如果你的电脑上安装有防火墙软件,可以试着禁用它或是卸载它。如果你的电脑上安装有防病毒软件,你也必须禁止它对PostgreSQL用到目录的监控,如果这样还不能起作用,也许需要完全地从你的电脑中卸载它。

有一些关于nod32防病毒产品的特例情况,如果你使用这个产品,在其高级选项中,将“postmaster.exe”加入到它不处理程序列表中去,这样就可以解决这个问题。

也有一些关于Mcafee和Panda防病毒软件以及NetLimiter网络监控软件的特例情况报告,由于一些人能够使PostgreSQL与这些软件共同工作,因此对那些PostgreSQL与这些软件不能正常运行的情况没有特别的或是推荐的方案,问题表现出安装有一定的特殊性,有时需要卸载(或重安装)。

另外还有一个问题就是如果你安装了Cygwin,并且cygwin\bin目录在系统的搜索路径Path变量,在cygin目录下有一些与解释型语言(TCL、perl、python)相关的DLL文件可能含有BUG会导致安装程序或是安装好的PostgreSQL运行时挂起或崩溃,只要在运行安装程序前将cygwin\bin从系统路径中删除即可!


 安装程序声称指定的帐号是管理员帐号,但(你认为)不是!

最大可能是你所指定的帐号是一个管理员帐号或是Power用户组帐号,但是你还未意识到这一点。安装程序会特别针对管理员组和Power用户组的成员进行检查。按照你原来的方法使用本地用户和工作组再操作一次 -- 打开管理员工作组,看一下有哪些成员。然后检查任何属于管理员级别的工作组(域中或本地组),同时也检查这些组的成员。PostgreSQL可以对嵌套的工作组设置进行深入的检查。


我收到一个类似 "the user has not been granted the requested logon type at this computer(用户没有被分配必需的登录权限)"的错误信息

首先确认所指定的PostgreSQL帐号有“作为服务程序登录”和“本地登录”的权限,“本地登录”的权限只是在安装时需要,安装完成后可以根据安全策略的需要删除此权限(权限的分配和删除可进入MMC程序的“本地安全策略”的子栏目,“本地登录”的权限是默认的,“作为服务程序登录”的权限正常情况下是由安装程序分配的)。

如果仍然存在此问题,打开“审核允许”权限(也在“本地安全策略”的子栏目中),同时也请通知我们,在这种情况下还需要什么权限。

注意,如果你的计算机是“域”中成员,你的安全策略设置也许是在域服务器上使用工作组安全策略来设定的。


在安装/运行initdb时,我收到一个权限错误信息

确认PostgreSQL的运行帐号有对安装的PostgreSQL目录有(合适的)权限。安装程序会设置安装目录的权限,但并不设置其父目录的权限。详见问题 2.5 可浏览所必须的权限信息。



相关文章:
pgSQL 集群过程
PL/SQL学习笔记:游标
Pgbouncer 管理员手册
Pgbouncer 用户手册
Pgbouncer 介绍
使用dbi-link在PG里访问异构数据库
PostgreSQL查看数据库表的大小
PostgreSQL设置默认的search path(schema)
PostgreSQL如何让数据按照中文排序
PostgreSQL利用用户定制的聚集函数选取每个分组的
PostgreSQL的FTI与中文全文索引的实践
PostgreSQL 8.3文档-V 服务器编程-扩展SQL-C 语言
在Windows系统上安装和运行PostgreSQL的常见问题
PostgreSQL常见问题
PostgreSQL 简介
Ubuntu系统下安装和配置PostgreSQL 8.1
影响postgresql性能的几个重要参数
PostgreSQL相关
如何从网络上登录其它计算机的PostgreSQL
在Ubuntu和Debian系统下安装PostgreSQL
导入文本文件中存放的数据
从其他机器登陆PostgreSQL
PostgreSQL入门
PostgreSQL 7.2 教程
PostgreSQL 8.0.0入门之创建数据库
postgresql-数据库物理存储
PL/pgSQL的结构
Postgresql-基本语句
PL/pgSQL控制结构
在 Windows 上安装客户端