Ruoli PostgreSQL rispetto agli utenti, concedere autorizzazioni


27

Attualmente sto imparando le differenze tra PostgreSQL e MySQL poiché ho un nuovo progetto e intendo anche migrare il mio software esistente da MySQL a PostgreSQL. In realtà ho iniziato a creare una tabella HTML con un confronto di comandi (per utenti / database / prompt dei comandi, ecc.) Tra i due. Dopo aver letto una risposta qui ho notato che rolesembra essere usato come un gruppo. Con MySQL Ho due utenti, fondamentalmente pubblici ( DELETE, INSERT, SELECTe UPDATEpermessi) e un utente amministratore con un paio di autorizzazioni aggiuntive.

Quindi sostanzialmente nel prompt dei comandi di Windows 7 (solo sviluppo locale) ...

  • Un ruolo è un utente, un gruppo o un termine poco utilizzato specifico di PostgreSQL?
  • Come concedo solo autorizzazioni specifiche a un utente specifico, per tutte le tabelle in un database?
  • Come concedo tutte le autorizzazioni a un utente specifico, per tutte le tabelle in un database?
  • In che modo un ruolo può essere paragonato a un utente durante l'utilizzo GRANTo REVOKEper le autorizzazioni utente?

Risposte:


48

Un ruolo è un'entità che può funzionare come utente e / o come gruppo. Un ruolo WITH LOGINpuò essere utilizzato come utente, ovvero è possibile accedere con esso. Qualsiasi ruolo può funzionare come gruppo, inclusi i ruoli a cui è possibile accedere anche come. Quindi "utente" e "gruppo" sono essenzialmente termini che indicano l' uso previsto di un ruolo, non esiste una reale distinzione tra di essi. Anche nel sapore PostgreSQL di SQL i due vengono usati più o meno come sinonimi. Ad esempio, la documentazione su CREATE USERdice:

CREATE USER è ora un alias per CREATE ROLE.

Concedere tutto ... consultare il manuale diGRANT . Probabilmente si desidera effettivamente concedere i diritti ALL TABLES IN SCHEMA publicpiuttosto che tutte le tabelle nel database.

Concedere alcuni diritti ... stessa cosa, ma invece di GRANT ALLusarli GRANT SELECT, INSERTper esempio. Ancora una volta, consultare il manuale.

Un ruolo è un utente e / o un gruppo. Puoi concedere solo ruoli, perché i ruoli sono tutto ciò che c'è.


Grande spiegazione!
Sharadov,

Quindi ... qual è la sintassi per garantire tutti i diritti a tutte le tabelle nello schema pubblico?
AlxVallejo

@AlxVallejo questo dovrebbe aiutare . Prova il link in alto o leggi la GRANTpagina della documentazione in cui è elencatoALL TABLES IN SCHEMA
Craig Ringer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.