2014-06-21 94 views
4

Win7。 Postgres 9.3。不允許具有管理權限的用戶執行postgresql

每次我在cmd中鍵入「postgres」時,都會出現此錯誤。

創建一個沒有任何管理員權限的新帳戶,並且使用「登錄爲」權限並對postgres/data具有正確的目錄訪問權限,然後在服務菜單中將此帳戶設置爲「登錄身份」仍然會得到相同的錯誤。

update2017:我從來沒有找到解決方案。

+1

你有沒有找到解決方案? – Blueriver

回答

0

這是因爲Postgres不希望從超級用戶帳戶運行以防止特權升級。啓動服務器爲postgres系統用戶。 Per documentation:

不管你做什麼,服務器必須以PostgreSQL用戶 帳戶下運行不是root或任何其它用戶。因此,您可能應該使用su postgres -c '...'來構建您的命令 。

+0

是的,我改變了它,所以postgres服務是由非管理員帳戶啓動,仍然是相同的錯誤。 – user3761308

+0

@ user3761308:使用'postgres'帳戶。 –

+0

那又怎麼樣? Windows 7.輸入以「postgres」開頭的任何內容都會導致該錯誤。 – user3761308

4

對於windows做到這一點:

  1. 開始的cmd.exe(管理員爲你)
  2. 添加postgres用戶: net user postgres your_password /add
  3. 使用新的Postgres啓動cmd.exe的帳戶: runas /user:postgres cmd.exe
  4. 您可以使用「whoami
  5. 」驗證您是否正確登錄
  6. 正常運行postgres。
+1

Postgres應該通過'pg_ctl' **而不是**通過'postgres.exe'啓動 –

2

從您的問題中不清楚您是否嘗試啓動Postgres 服務或「手動」啓動Postgres而未註冊Windows服務。

由於9.x Postgres不需要它自己的Windows用戶帳戶來運行該服務。它默認使用內置的「網絡」帳戶。

要啓動Postgres的服務(如果它已正確安裝),只需使用使用

net start postgresql-9.3 

(實際名稱可能有所不同)

如果您沒有註冊一個Windows服務,您應該通過pg_ctl.exe開始Postgres而不是通過postgres.exepg_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 

再次對數據目錄的訪問權限必須正確地進行設置。

相關問題