Win7。 Postgres 9.3。不允許具有管理權限的用戶執行postgresql
每次我在cmd中鍵入「postgres」時,都會出現此錯誤。
創建一個沒有任何管理員權限的新帳戶,並且使用「登錄爲」權限並對postgres/data具有正確的目錄訪問權限,然後在服務菜單中將此帳戶設置爲「登錄身份」仍然會得到相同的錯誤。
update2017:我從來沒有找到解決方案。
Win7。 Postgres 9.3。不允許具有管理權限的用戶執行postgresql
每次我在cmd中鍵入「postgres」時,都會出現此錯誤。
創建一個沒有任何管理員權限的新帳戶,並且使用「登錄爲」權限並對postgres/data具有正確的目錄訪問權限,然後在服務菜單中將此帳戶設置爲「登錄身份」仍然會得到相同的錯誤。
update2017:我從來沒有找到解決方案。
這是因爲Postgres不希望從超級用戶帳戶運行以防止特權升級。啓動服務器爲postgres
系統用戶。 Per documentation:
不管你做什麼,服務器必須以PostgreSQL用戶 帳戶下運行不是root或任何其它用戶。因此,您可能應該使用
su postgres -c '...'
來構建您的命令 。
是的,我改變了它,所以postgres服務是由非管理員帳戶啓動,仍然是相同的錯誤。 – user3761308
@ user3761308:使用'postgres'帳戶。 –
那又怎麼樣? Windows 7.輸入以「postgres」開頭的任何內容都會導致該錯誤。 – user3761308
對於windows做到這一點:
net user postgres your_password /add
runas /user:postgres cmd.exe
whoami
Postgres應該通過'pg_ctl' **而不是**通過'postgres.exe'啓動 –
從您的問題中不清楚您是否嘗試啓動Postgres 服務或「手動」啓動Postgres而未註冊Windows服務。
由於9.x Postgres不需要它自己的Windows用戶帳戶來運行該服務。它默認使用內置的「網絡」帳戶。
要啓動Postgres的服務(如果它已正確安裝),只需使用使用
net start postgresql-9.3
(實際名稱可能有所不同)
如果您沒有註冊一個Windows服務,您應該通過pg_ctl.exe
開始Postgres而不是通過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
再次對數據目錄的訪問權限必須正確地進行設置。
你有沒有找到解決方案? – Blueriver