sql >> Databasteknik >  >> RDS >> PostgreSQL

Det går inte att släppa PostgreSQL-rollen. Fel:`kan inte släppas eftersom vissa objekt är beroende av det`

DROP USER (eller DROP ROLE , samma sak) kan inte fortsätta medan rollen fortfarande äger någonting eller har några beviljade privilegier på andra objekt.

Bli av med alla privilegier med DROP OWNED (vilket inte är alltför uppenbart av formuleringen) . Handboken:

Så den pålitliga sekvensen av kommandon för att ta bort en roll är:

REASSIGN OWNED BY ryan TO postgres;  -- or some other trusted role
DROP OWNED BY ryan;

Kör båda kommandona i varje databas i samma kluster där rollen äger något eller har några privilegier!
Och slutligen:

DROP USER ryan;
  • REASSIGN OWNED ändrar äganderätt för alla objekt som för närvarande ägs av rollen.
  • DROP OWNED återkallar då bara privilegier (äganderätt ur vägen).

Alternativt kan du hoppa över REASSIGN OWNED . Sedan DROP OWNED kommer (även) att släppa alla objekt som ägs av användaren. (Är du säker?!)

Relaterat:



  1. Hur man konfigurerar AppArmor för MySQL-baserade system (MySQL/MariaDB Replication + Galera)

  2. JBoss återansluter automatiskt till databasen när databasen startas om/kopplas från

  3. Databasdesignkoncept med SQL Server Management Studio (SSMS) del 1

  4. MySql infoga uttalande till binär datatyp?