我已经使用通常的安装方法在 Windows 7 Enterprise x64 系统上安装了 PostgreSQL 9.1 x64。该计算机有一个 Novell Client for Windows 和一个 ZENworks Adaptive Agent,我想它在外部管理系统的一些用户/策略。我已经在几台 Windows 计算机上安装了 postgres,所以我对这个系统的行为有所不同感到有点惊讶。
当计算机重新启动时,PostgreSQL 服务不会启动。尝试启动服务的完整消息是:
Windows 无法在本地计算机上启动 postgresql-x64-9.1 - PostgreSQL Server 9.1 服务。错误 1069:由于登录失败,服务没有启动。
然后我可以转到该服务的属性,在“登录”选项卡中,重新键入最初用于安装程序的密码。
当我单击“确定”时,会出现一个对话框:
帐户 .\postgres 已被授予“作为服务登录”权限。
听起来不错。然后我可以正确启动 PostgreSQL 服务并继续。问题是当我重新启动时,我需要去管理服务,重新输入密码并再次手动启动服务。
查看“本地安全策略”中的“用户权限分配”,看到每次重启后“作为服务登录”都被抹掉,只留下默认的“NT SERVICE\ALL SERVICES”。这是我在重新启动时看到的:
然后我可以手动将COMPNAME\postgres
用户添加到此对话框以启动服务,但它会在下次重新启动时消失。
问题是“作为服务登录”特权被本地安全策略擦除,还是 Novell Client/ZENworks Adaptive Agent 有问题?是否有任何其他策略可以使 .\postgres 用户获得“作为服务登录”特权?
另一种方式,可能是用户“Postgres”(Windows 用户)的密码已更改。因此,转到 postgres 服务的“登录”选项卡,以 .\postgres(无更改)身份登录,然后重新输入正确的密码。
修复很简单。转到 postgres 服务的“登录”选项卡,并将选择从“此帐户”更改为“本地系统帐户”(我的问题中的第二个数字)。现在完美运行。
解决此问题的另一种方法似乎是将服务的启动类型从Automatic更改为Automatic (Delayed Start)。我不确定为什么这会解决问题,但可能需要其他服务之一才能“作为服务登录”