LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2113|回复: 17

关于POSTGRESQL的问题。

[复制链接]
发表于 2003-6-11 16:01:38 | 显示全部楼层 |阅读模式
昨天想试试安装PHPBB2,也就是咱们这个坛子的BBS。我选择PGSQL作为数据库。但是在安装的时候,提示以下错误:

Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host lizard and accepting TCP/IP connections on port 5432? . in /srv/www/htdocs/bbs/phpbb2/db/postgres7.php on line 79
phpBB : Critical Error

Could not connect to the database

于是,我找到了postgresql.conf文件,拷贝了一份到/etc目录,修改了其中的三项重新启动:
tcpip_socket = true
port = 5432
show_source_port = true

重新进入PHPBB2安装程序,仍然提示相同的错误。PGSQL明明是运行的,为何会出现此类错误呢?请各位兄弟看看。
发表于 2003-6-11 16:03:43 | 显示全部楼层
postgreSQL的配置文件不应该放在/etc目录下。
那个配置文件应该放在你安装数据集群的目录下。改完了这个文件之后,还要修改配置文件pg_hba.conf里关于认证的配置。
 楼主| 发表于 2003-6-11 17:40:19 | 显示全部楼层
最初由 黄叶 发表
postgreSQL的配置文件不应该放在/etc目录下。
那个配置文件应该放在你安装数据集群的目录下。改完了这个文件之后,还要修改配置文件pg_hba.conf里关于认证的配置。



那我想请问斑竹,我就是没有发现pg_hba.conf这个文件啊。这个文件也是跟随postgreSQL.conf一起的吗?能否详细说明一下?
发表于 2003-6-11 17:53:24 | 显示全部楼层
对呀。这个文件是和那个postgresql.conf文件是在一起的呀。
能不能说一下你的系统版本,你的数据库系统版本,你的安装方法等。
要在第一次启动时,也就是初始化一个数据集群时,也就是初始化一个数据库安装目录时数据库系统自动会拷到里面的。
 楼主| 发表于 2003-6-11 18:04:14 | 显示全部楼层
我的系统是SUSE8.2 PRO,分为几个包安装的,其中有postgresql,postgresql-server,至于初始化,我不知道如何初始化。反正,通过默认的postgres创建了一个超级用户,其它的没有做过。
恳请不吝赐教,多谢了。


pg_hba.conf
应该如何配置呢?比如我有SUSE1,SUSE2两个用户以及SUDB1,SUDB2,IP地址为192.168.1.8(主机地址),主机名为suse

ocal   all         all                                             trust
host    all         all         127.0.0.1         255.255.255.255   trust
suse        sudb1,sudb2        suse1,suse2 192.168.1.0        255.255.255.0 trust

以上这么写,会不会把外网的数据库访问给禁止了?BBS对数据库的访问应该属于内部访问吧?我们发帖子,不会访问到数据库,是吗?
发表于 2003-6-12 08:39:39 | 显示全部楼层
如果是用RPM包安装的,那么数据的初始化在/etc/rc.d/init.d/postgresql这个脚本中它已经有了,这个脚本的默认的数据集群目录应该是这个:/var/lib/pgsql,这个目录。你第一次启动postgresql时,它会自动初始化数据库目录的。如果手动来初始化的,只要运这个命令:initdb -D 目录,然后启动数据库postmaster -D 目录 -i 即可了。
在文件pg_hba.conf 中配置认证方式时,要明白数据库用户和UNIX系统用户是不同的。之所以要创建一个postgres的系统用户,一个是为了有一个专用的帐号来管理postgreSqL数据库系统,另一个原因是因为缺省的数据库系统里有这么一句关于认证的写法:locahost all all ident sameuser ,即采用与系统用户一致的认证。你也可以不用建postgres这个系统帐号,而直接改动这个系统认证的配置文件:pg_hba.conf, 在启动数据库的时候用这个命令:psql -h localhost -U postgres也行。数据库用户是需要在数据库系统中创建的。要么运行命令createuser, 要么登录数据库系统后运行SQL命令:CREATE USER 用户名 with passowrd '密码‘ CREATEUSER(超级用户) 或者 是CRATEDB(可以创建数据库),或者是一般用户。
 楼主| 发表于 2003-6-12 10:22:58 | 显示全部楼层
多谢斑竹,我再试试看。
 楼主| 发表于 2003-6-12 11:36:43 | 显示全部楼层
通过查看/etc/passwd这个文件,可以看到postgres用户的工作目录是/var/lib/pgsql,但是,所有运行时候需要的文件在其下面的data里。我按照你的说法把postgresql.conf,pg_hba.conf文件改写了其中的选项,同时将pgsql这个目录更改为755,但还是不行。
发表于 2003-6-12 15:07:20 | 显示全部楼层
能够启动数据库吗?
/etc/rc.d/init.d/postgresql start
有没有错误提示?
然后用客户端连入看行不行?
psql -h 127.0.0.1 -U postgres template1
行不行?
看看有什么提示?
 楼主| 发表于 2003-6-12 17:42:50 | 显示全部楼层
按照你上面这个命令,出现了template1的提示符,这说明PG是工作的,对吗?但,为何不会在5432侦听呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表