Windows安装PostgreSQL数据库 无法初始化数据库问题

Posted 简玄冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows安装PostgreSQL数据库 无法初始化数据库问题相关的知识,希望对你有一定的参考价值。

背景

由于项目的需要,使用PostgreSQL数据库,因此在Windows上安装PostgreSQL数据库。但是在安装后,无法访问本地数据库,这个时候查看/data目录,没有任何文件。而且安装过程中,弹出提示框

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

系统环境

  • 操作系统:Windows 10 Pro
  • PostgreSQL版本:10.4-1
  • 账号:非超级管理员账号

原因

在Windows 10中,如果用的是Microsoft账号,则不是超级管理员,这个时候无法创建用户,导致通过安装包进行安装时,无法创建相应的DB用户。而且在账号中无法看到postgres这个用户,因此可猜测出,权限不足时,无法创建相应用户的账号,而无相应账号时,无法初始化DB。

解决方案

查看用户

net  user

创建Postgres用户

net user postgres postgres /add

在数据库根目录建立data目录

D:\\Dev\\PostgreSQL\\10>md data

移除超级管理员对data目录的权限

D:\\Dev\\PostgreSQL\\10>cacls data /e /t /r administrator
处理目录:D:\\Dev\\PostgreSQL\\10\\data

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

D:\\Dev\\PostgreSQL\\10>cacls data /e /t /r postgres:C
处理目录:D:\\Dev\\PostgreSQL\\10\\data

初始化数据库

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

初始化后,需要输入新的用户密码,用于登录数据库。

启动数据库

D:\\Dev\\PostgreSQL\\10\\bin>pg_ctl.exe -D D:\\Dev\\PostgreSQL\\10\\data -l logfile start

注册PostgresSQL服务

D:\\Dev\\PostgreSQL\\10\\bin>pg_ctl.exe register -N PostgreSQL -D D:\\Dev\\PostgreSQL\\10\\data

常用命令

启动PostgresSQL服务

net start PostgreSQL

停止PostgresSQL服务

net stop PostgreSQL

删除PostgresSQL服务

D:\\Dev\\PostgreSQL\\10\\bin>pg_ctl.exe unregister -N PostgreSQL

以上是关于Windows安装PostgreSQL数据库 无法初始化数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

windows vista下怎么安装 postgresql?

在 Windows 7 的应用程序安装程序中捆绑 PostgreSQL

如何在w7-64上安装postgresql-9.6.2-1-windows-x64

PostgreSQL 9.2.4-x64 在 windows 8 Pro 64bit 上的安装问题

Postgresql 角色无法访问其创建的架构

Windows8专业版可以安装PostgreSQL数据库吗?