PostgreSQL安装初始化集群失败


文章目录

  • 前言
  • 一、造成原因有什么?
  • 二、解决步骤
  • 1.首先查看系统用户,是否存在postgres用户
  • 2.没有postgres用户便创建postgres用户
  • 3.移除超级管理员对数据存放文件夹data权限
  • 4.将data目录的权限赋给postgres用户;
  • 5.用postgres用户打开cmd
  • 6.初始化数据库
  • 7.启动数据库
  • 总结



前言

在不久前我在Windows Server 2012 环境安装PostgreSQL及PostGIS出现此问题找了一下文章,但感觉还是记录一下过程加深印象比较好。

报错如下:Problem running post-install step.Installation may not complete correctly the database cluster initialisation failed.
意思是:安装过程中,初始化数据库集群失败



一、造成原因有什么?

由于使用未使用系统管理员账户及在C盘下安装postgresql权限不足原因可能导致的数据库初始化失败。

二、解决步骤

1.首先查看系统用户,是否存在postgres用户

因为PostgreSQL安装报错,造成默认用户Postgres并未创建;所以第一步确定是否已存在Postgres用户。
在cmd中执行以下命令查看

net user

2.没有postgres用户便创建postgres用户

此步骤可以使用管理员模式cmd中创建也可以直接到系统中创建。

3.移除超级管理员对数据存放文件夹data权限

*其他管理员权限过大会导致执行后面命令报其他错误
数据目录:C:\PostgreSQL\data

C:\PostgreSQL>cacls data /e /t /r administrator

4.将data目录的权限赋给postgres用户;

*否则使用postgres账户也无法初始化数据库
数据目录:C:\PostgreSQL\data

C:\PostgreSQL>cacls data /e /t /r postgres:C

5.用postgres用户打开cmd

*去除管理员data权限后,切换到有权限的postgres下进行操作
数据目录:C:\PostgreSQL\data

C:\PostgreSQL>runas /user:postgres cmd.exe
输入 postgres 的密码:
试图将 cmd.exe 作为用户 "SURE-PC\postgres" 启动...

6.初始化数据库

*postgres账户下执行以下命令,其他账户执行会报错;在安装目录bin文件夹下执行

C:\PostgreSQL\bin>initdb.exe -D ../data -E UTF-8 --locale=chs -U postgres -W

7.启动数据库

*postgres账户下执行以下命令,其他账户执行会报错;在安装目录bin文件夹下执行

C:\PostgreSQL\bin>pg_ctl.exe -D C:\PostgreSQL\data -l logfile start
或
"pg_ctl" -D "../data" start

总结

提示:以上操作虽然启动了postgresql但没有postgresql服务,只是进程中postgresql在运行;
目前我尝试过生成服务但却不能运行起来,此问题还待解决,
所有重启PostgreSQl仍需要停止进程再重新执行7中的命令;

本人还并不太熟悉数据库方面,文章中如果存在问题欢迎指正

参考文章:
1、 在windows下手动初始化PostgreSQL数据库教程