不允许具有pipe理权限的用户执行postgresql

Win7的。 Postgres 9.3。

每次我在cmd中键入“postgres”,我得到这个错误。

创build一个没有任何pipe理权限的新帐户,以“login身份”权限和正确的目录访问权限Postgres /数据,然后我把这个帐户设置为服务菜单中的“login为”,但我仍然得到相同错误。

update2017:我从来没有find这个解决scheme。

对于窗户做到这一点:

  1. 启动cmd.exe(管理员照原样)
  2. 添加postgres用户: net user postgres your_password /add
  3. 使用新的postgres帐户启动cmd.exe: runas /user:postgres cmd.exe
  4. 您可以使用“ whoami ”验证您是否正确登录
  5. 正常运行postgres。

从你的问题来看,你是不是正在尝试启动Postgres 服务,或者是否没有注册Windows服务而“手动”启动Postgres。

由于9.x Postgres不需要它自己的Windows用户帐户来运行服务。 它默认使用内置的“网络”帐户。

要启动Postgres服务(如果它已被正确安装),只需使用use

 net start postgresql-9.3 

(实际名称可能不同)

如果您没有注册Windows服务,则应通过pg_ctl.exe启动Postgres, pg_ctl.exe不是通过postgres.exe启动。 启动服务器时, pg_ctl.exe将从进程中删除任何管理权限。

要从命令行手动启动Postgres,请使用:

 pg_ctl -w -D c:\Path\To\The\DataDirectory 

假定对数据目录的访问权限设置正确,以便当前用户可以完全访问该目录。

如果要手动安装/创建Windows服务,也可以通过pg_ctl程序执行此操作:

 pg_ctl register -N "postgresql-9.3" -D c:\Path\To\The\DataDirectory 

再次,数据目录的访问权限必须正确设置。

这是因为Postgres不希望从超级用户帐户运行,以防止特权升级。 以postgres系统用户启动服务器。 每个文档:

无论你做什么,服务器必须由PostgreSQL用户帐户运行,而不是由root用户或其他用户运行。 因此,你可能应该使用su postgres -c '...'来形成你的命令。