2014-01-08 20 views
5

Leider habe ich Super-User-Privilegien von Postgres-Benutzer in PostgreSQL entfernt. Und derzeit habe ich keinen Super-User in PostgreSQL. Und ich möchte Superuser machen. Wie kann ich es schaffen? Jedes Mal, wenn ich versuche, Postgres zu Super User zu machen. Ich stehe vor diesem Problem.Fehler: muss Superuser sein, um Superusers zu ändern

Error : must be superuser to alter superusers. 

Vielen Dank im Voraus,

Antwort

2

Sie werden das Datenbanksystem und starten Sie eine Stand-alone-Back-End-, die immer bedingungslos als Superuser laufen haben, zu stoppen.

Sie können dieses Backend zu ALTER dem Benutzer verwenden, dem Sie Superuser-Rechte geben möchten. Schließen Sie dann das Standalone-Backend und starten Sie die Datenbank normal.

Es ist wichtig, dass Sie den Datenbankserver vollständig stoppen, bevor Sie in den Einzelbenutzermodus wechseln. Der PostgreSQL-Einzelbenutzermodus wird nicht gestartet, wenn ein Postmaster vorhanden ist, aber Sie sollten sicherstellen, dass auf Ihrem System keine PostgreSQL-Prozesse ausgeführt werden. Under (almost) no circumstances should you ever delete postmaster.pid - das führt ziemlich sicher zur Beschädigung der Datenbank, wenn immer noch irgendein PostgreSQL-Prozess auf dieses Datenverzeichnis zugreift.

Wie Sie ein eigenständiges Back-End starten, hängt ein wenig von Ihrem Betriebssystem/Ihrer Distribution und davon ab, wie Sie PostgreSQL installiert haben. Sie haben diese Informationen nicht angegeben, daher kann ich Sie nur auf the manual for the postgres back-end executable hinweisen.

Erstellen Sie zuerst eine Sicherung.

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.

Siehe Abschnitt Optionen für Single-User-Modus und in Richtung der Unterseite, Usage. Sie möchten das postgres-Back-End mit --single, als Unix-Benutzer ausführen, der die Datenbankdateien mit dem Pfad zum Datadir besitzt. An einem typischen Linux PostgreSQL installieren, um diese so etwas wie sein könnte:

sudo systemctl stop postgresql-9.3.service 
sudo -u postgres /usr/pgsql-9.3/bin/postgres --single -D /var/lib/pgsql/9.3/data 

Ihre datadir und postgres ausführbare Lage sind möglicherweise anders. Das obige ist für ein Fedora-System, das mit PGDG PostgreSQL-Paketen von http://yum.postgresql.org/ ausgeführt wird.

+0

Vielen Dank.Ich benutzte ein Puppet-Modul, um eine Datenbank zu definieren. Ich dachte, es sei in Ordnung, den Postgres-Benutzer als Besitzer der Datenbank festzulegen, aber ways postgresql :: Server :: Db [mydb]/Postgresql :: Server :: Role [postgres]/Postgresql_psql [ALTER ROLE "postgres" NOSUPERUSER]/Befehl) Befehl geändert 'notrun' zu 'ALTER ROLE' postgres "NOSUPERUSER ' – tobixen

7

(vorausgesetzt, Sie Root-Zugriff auf Ubuntu-Rechner haben)

Um psql als Superuser eingeben müssen Sie:

sudo -u postgres psql 

als SO here

Eintrag in dem vorgeschlagen Wenn es keine Benutzer mit dem Namen postgres müssen Sie zuerst auf dem System erstellen, mit:

Sonst, wenn Sie Probleme mit Passwort nicht oder überhaupt nicht erstellt haben, können Sie folgen (Ubuntu 14.04 bezogen) Anweisungen here oder für mehr auf Benutzerkonten aussehen here

+0

Dies beantwortet die Frage nicht. – lunr