不幸的是,我已經從PostgreSQL中的postgres用戶中刪除了超級用戶權限。目前我在PostgreSQL中沒有任何超級用戶。我想成爲超級用戶。那我該怎麼做呢?每次我試圖讓超級用戶的postgres。我正面臨着這個問題。錯誤:必須是超級用戶才能更改超級用戶
Error : must be superuser to alter superusers.
由於提前,
不幸的是,我已經從PostgreSQL中的postgres用戶中刪除了超級用戶權限。目前我在PostgreSQL中沒有任何超級用戶。我想成爲超級用戶。那我該怎麼做呢?每次我試圖讓超級用戶的postgres。我正面臨着這個問題。錯誤:必須是超級用戶才能更改超級用戶
Error : must be superuser to alter superusers.
由於提前,
你將不得不停止數據庫系統,並啓動獨立的後端,它總是無條件地運行作爲一個超級用戶。
您可以使用此後端到ALTER
您希望授予超級用戶權限的用戶。然後關閉獨立後端並正常啓動數據庫。
在進入單用戶模式之前,完全停止數據庫服務器非常重要。如果有postmaster,PostgreSQL單用戶模式將拒絕啓動,但要確保您的系統上沒有運行PostgreSQL進程。 Under (almost) no circumstances should you ever delete postmaster.pid
- 如果仍然有PostgreSQL進程訪問該數據目錄,那麼幾乎可以確保導致數據庫損壞。
準確地說,如何啓動一個獨立的後端,取決於您的操作系統/發行版以及您如何安裝PostgreSQL。你沒有包含這個信息,所以我只能指出你在the manual for the postgres
back-end executable。
首先進行備份。
In the single-user mode, the session user will be set to the user with ID 1, and implicit superuser powers are granted to this user. This user does not actually have to exist, so the single-user mode can be used to manually recover from certain kinds of accidental damage to the system catalogs.
見節單用戶模式選項和朝向底部,用法。您需要以--single
,作爲擁有數據庫文件的unix用戶以及指向datadir的路徑運行postgres
後端。在一個典型的Linux PostgreSQL的安裝,這可能是這樣的:
sudo systemctl stop postgresql-9.3.service
sudo -u postgres /usr/pgsql-9.3/bin/postgres --single -D /var/lib/pgsql/9.3/data
你DATADIR和postgres
可執行文件的位置是很可能不同。以上是針對Fedora系統運行的PGDG PostgreSQL包,其編號爲http://yum.postgresql.org/。
感謝一堆。我使用puppet模塊來定義數據庫,我認爲可以將postgres用戶設置爲數據庫的所有者,但woops Postgresql :: Server :: Db [mydb]/Postgresql :: Server :: Role [postgres]/Postgresql_psql [ALTER ROLE「postgres」NOSUPERUSER]/command)命令將'notrun'改爲'ALTER ROLE'postgres「NOSUPERUSER' – tobixen