Chinaunix首页 | 论坛 | 博客
  • 博客访问: 706476
  • 博文数量: 214
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 2285
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-18 17:02
文章分类

全部博文(214)

文章存档

2008年(43)

2007年(171)

我的朋友

分类:

2008-06-11 23:34:23

在Windows下怎么将postgresql安装成服务?
其实安装办法和mysql在Windows的下安装差不多,这里我们可以使用类unix下安装postgresql的类比思维,这里简单介绍一下。
在window里,不要直接用postmaster来启动,这样会出现:
不允许管理员权限的用户运行 PostgreSQL 服务器
服务器必须以一个非特权的用户身份启动以避免
可能的系统安全性问题. 参阅文档获取更多
有关如何正确启动服务器的信息.
的字样,postgresql提供一个pg_ctl.exe程序来完成安装windows的服务:
F:/usr/local/pgsql/bin/pg_ctl.exe runservice -N "PGSQL" -D "F:/usr/local/pgsql/data"
然后启动PGSQL服务:
net start PGSQL

提示成功,且打开任务管理器,发现postgres.exe进程在,但是直接使用psql时候出现
D:\>psql
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

看样子是类似unix的socket的接口没有接上,那我们就想办法接上吧。
开始从postgresql的配置文件postgresql.conf 中没有发现tcpip_socket字样的接口,去官方文档一查,原来是postgresql从8.24版本以后抛弃了这个参数,一切使用 listen_addresses来控制。
于是修改postgresql.conf文件,将listen_addresses修改成 'localhost',并去掉前面的“#”号,片段如下:
listen_addresses = 'localhost'        # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost', '*' = all
                    # (change requires restart)
port = 5432                # (change requires restart)
max_connections = 100            # (change requires restart)
然后使用客户端程序psql进行连接:
D:\>psql -h localhost -U root -d cnangel
Welcome to psql 8.0.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

cnangel=# \l
        List of databases
   Name    |  Owner  | Encoding
-----------+---------+-----------
 QQ        | cnangel      | SQL_ASCII
 cnangel   | cnangel | SQL_ASCII
 postgres  | root    | SQL_ASCII
 root      | root    | SQL_ASCII
 template0 | root    | SQL_ASCII
 template1 | root    | SQL_ASCII
(6 rows)
cnangel=# alter database "QQ" owner to "QQ";
cnangel=# \l
        List of databases
   Name    |  Owner  | Encoding
-----------+---------+-----------
 QQ        | QQ      | SQL_ASCII
 cnangel   | cnangel | SQL_ASCII
 postgres  | root    | SQL_ASCII
 root      | root    | SQL_ASCII
 template0 | root    | SQL_ASCII
 template1 | root    | SQL_ASCII
(6 rows)
使用各种元命令和SQL语句无任何问题,一个Windows系统上架设的POSTGRESQL就完成了,我的POSTGRESPQL版本是postgresql v8.25 no install版本。
阅读(13091) | 评论(9) | 转发(0) |
给主人留下些什么吧!~~

gaohe82015-10-25 21:25:34

只差一点: 命令行应该是F:/usr/local/pgsql/bin/pg_ctl.exe register -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
注册后服务中显示的命令行是F:/usr/local/pgsql/bin/pg_ctl.exe runservice -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
很有误导性吧?

PS:已用管理员用户登陆的,可能会用到runas命令。

gaohe82015-10-25 21:25:34

只差一点: 命令行应该是F:/usr/local/pgsql/bin/pg_ctl.exe register -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
注册后服务中显示的命令行是F:/usr/local/pgsql/bin/pg_ctl.exe runservice -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
很有误导性吧?

PS:已用管理员用户登陆的,可能会用到runas命令。

gaohe82015-10-25 21:25:34

只差一点: 命令行应该是F:/usr/local/pgsql/bin/pg_ctl.exe register -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
注册后服务中显示的命令行是F:/usr/local/pgsql/bin/pg_ctl.exe runservice -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
很有误导性吧?

PS:已用管理员用户登陆的,可能会用到runas命令。

gaohe82015-10-25 21:25:26

只差一点: 命令行应该是F:/usr/local/pgsql/bin/pg_ctl.exe register -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
注册后服务中显示的命令行是F:/usr/local/pgsql/bin/pg_ctl.exe runservice -N \"PGSQL\" -D \"F:/usr/local/pgsql/data\"
很有误导性吧?

PS:已用管理员用户登陆的,可能会用到runas命令。