sql >> Database >  >> RDS >> PostgreSQL

Een gebruiker in Superuser veranderen in PostgreSQL

  • Een nieuwe gebruiker maken
  • Bestaande gebruikersrechten bekijken
  • Bestaande gebruikersrechten wijzigen
    • Toewijzen SUPERUSER Toestemming
    • Machtigingen intrekken

Het wijzigen van gebruikersrechten binnen PostgreSQL kan variëren van vrij eenvoudig tot extreem complex, afhankelijk van de permissieve granulariteit die daadwerkelijk vereist is. In de meeste gevallen is het echter de krachtige ALTER USER commando dat moet worden gebruikt om alles te doen, van gebruikers toestaan ​​​​in te loggen, databases te maken, rollen te beheren en zelfs een SUPERUSER te worden account.

We gaan kort in op de kracht van de ALTER USER commando, zodat u gemakkelijk een verscheidenheid aan machtigingstoewijzingen en verwijderingen kunt uitvoeren als dat nodig is.

Een nieuwe gebruiker maken

Voordat we ingaan op veranderen gebruikersrechten, moeten we een nieuw gebruikersaccount aanmaken (gewoonlijk een ROLE genoemd) ) om mee te rommelen.

Om te beginnen zullen we alle bestaande gebruikers opsommen:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Standaard postgres is meestal de enige bestaande gebruiker, dus we willen een nieuwe gebruiker maken van librarian om onze library te beheren databank. Dit kan worden bereikt met behulp van de CREATE USER commando:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Bestaande gebruikersrechten bekijken

Het kan vaak handig zijn om de bestaande machtigingen die aan de gebruikers in het systeem zijn toegewezen, te onderzoeken. Dit kan eenvoudig worden bereikt met de \du commando van de psql prompt:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Dat kunnen we duidelijk zien, ook al hebben we nu een nieuwe librarian . toegevoegd gebruiker, we moeten het een aantal rechten toewijzen.

Bestaande gebruikersrechten wijzigen

Nu onze librarian gebruiker bestaat, kunnen we ALTER USER gaan gebruiken om de machtigingen te wijzigen die zijn verleend aan librarian .

Het basisformaat van ALTER USER bevat de naam van de gebruiker (of ROLE ) gevolgd door een reeks options om PostgreSQL te informeren welke toegestane wijzigingen moeten worden aangebracht:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Deze opties variëren van CREATEDB , CREATEROLE , CREATEUSER , en zelfs SUPERUSER . Bovendien hebben de meeste opties ook een negatieve tegenhanger, waardoor het systeem wordt geïnformeerd dat u weigeren de gebruiker die bepaalde toestemming. Deze optienamen zijn hetzelfde als hun toewijzingstegenhanger, maar worden voorafgegaan door NO (bijv. NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

SUPERUSER Toestemming

Nu we de basis begrijpen van het maken van gebruikers en het gebruik van ALTER USER om machtigingen te wijzigen, kunnen we heel eenvoudig de SUPERUSER . gebruiken optie om onze librarian toe te wijzen gebruiker SUPERUSER toestemming:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

En ja hoor, als we onze lijst met machtigingen nu weergeven, zien we librarian heeft de nieuwe SUPERUSER toestemming die we willen:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Machtigingen intrekken

In het geval dat we een fout maken en een toestemming toewijzen die we later willen intrekken, geef dan gewoon dezelfde ALTER USER commando maar voeg de NO . toe prefix voor de permissieve opties die moeten worden ingetrokken.

We kunnen bijvoorbeeld SUPERUSER . verwijderen van onze librarian gebruiker vindt dit leuk:

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

  1. Open source-gegevens worden volwassen:kiezen voor MySQL, NoSQL of beide

  2. Uitgesloten rijen opnemen in RETURNING from INSERT ... ON CONFLICT

  3. GTT-tabelstatistieken en SYS.WRI$_OPTSTAT_TAB_HISTORY

  4. Hoe de standaard nls_date_format voor de Oracle jdbc-client te wijzigen