准备:
PostgreSQL拟装在d:\postgresql 数据库以后拟存放在d:\postgresql\data
适用情景
PostgreSQL有Windows安装版,我们这里的适用场景是,从其他机器上拷贝了一份PostgreSQL,拷贝解压之后的目录结构如下:
设置环境变量
创建PGHOME=D:/postgresql
Path变量加入:%PGHOME%/bin
初始化并创建数据库(一次即可)
initdb.exe -D d:\postgresql\data -E UTF-8 --locale=chs -U postgres -W
-D :指定数据库簇的存储目录E:\pgsql\data
-E :指定DB的超级用户的用户名postgres
--locale:关于区域设置(chinese-simplified-china)
-U :默认编码格式chs
-W :为超级用户指定密码的提示
执行结果如下
注册为windows系统服务
如果不注册为系统服务,每次需要运行如下命令启动
pg_ctl -D d:\postgresql -l logfile start
启动后,在数据库安装的主目录下生成一个logfile文件:D:\postgresql\logfile
注:如果注册系统服务,请使用管理员权限方式运行cmd.exe
pg_ctl register -N "PostgreSQL" -D "D:\postgresql\data"
查看已经注册的服务:win+R在弹出的运行框中,输入:services.msc,如下:
右键点击PostgreSQL属性,你就会发现可执行路径如下
D:/postgresql/bin/pg_ctl.exe runservice -N "PostgreSQL" -D "D:\postgresql\data" -w
命令行输入如下命令启动数据库:
net start PostgreSQL
查看是否启动
命令行下输入:tasklist
命令行下输入 netstat –ano -p tcp | findstr "5432"
TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING 32680
可以查看所有和本地计算机建立连接的IP 卸载服务:
同样需要管理员权限,两种方式
1) pg_ctl unregister –N PostgreSQL (win8)
2) sc delete PostgreSQL (PostgreSQL)
密码重置
如果忘记了刚才设置的密码,需要在d:\postgresql\data目录找到pg_hba.conf,修改成如下
# TYPE DATABASE USER ADDRESS METHOD# IPv4 local connections:host all all 127.0.0.1/32 trust# IPv6 local connections:host all all ::1/128 trust# Allow replication connections from localhost, by a user with the# replication privilege.#host replication postgres 127.0.0.1/32 md5#host replication postgres ::1/128 md5
执行下面命令,重新加载配置
pg_ctl reload
然后通过命令或者图形化工具,登录,这里我使用命令
psql -h localhost -p 5432 -U postgres
然后修改密码
alter user postgres with password 'mynewpasword;
修改完之后,把pg_hba.conf中的trust改回md5,然后执行
pg_ctl reload