Domanda

Ho una domanda su PostgreSQL che non riesco a capire. Come sembra finora, ha bisogno di un po 'di broteforce nei tavoli. Bene, ho fatto così tanto tempo e non ho trovato nulla. Quindi, in primo luogo coprirò il mio obiettivo.

Quello che devo fare è ottenere un numero di tabelle virtuali che l'utente specificato è in grado di scrivere query in PostgreSQL. In altre parole, potrebbe esserci l'utente foo123 E potrebbe esserci, supponiamo, quattro tavoli: table1, table2, table3 e table4. E potrebbe esserci possibilità che l'utente foo123 è in grado di scrivere domande per table1 e table2, ma non per table3 e table4. Quindi, per query facendo il mio compito dovrei ottenere 2 (non c'è differenza di quale nome sarebbe - posso pensare a qualsiasi nome per la colonna).

Ora coprirò ciò che ho cercato di fare e ciò che ho raggiunto. Per ora, posso vedere che devo usare le informazioni da information_schema. Ma c'è un problema. Non so dove posso trovare gli utenti information_schema ed elenchi di tabelle, associati a questi utente da qualsiasi colonna. Bene, fino ad ora ho trovato tre tavoli sulla concessione dei privilegi di fare qualcosa: information_schema.table_privileges, information_schema.column_privileges, usage_privileges. Penso di dover usare le informazioni dalla tabella information_schema.table_privileges (Colonne che dovrei essere interessato, credo, lo sono grantee e table_name). E potrebbe apparire come un percorso per trovare una soluzione, ma un piccolo problema. Se trattassimo grantee Come utente che è in grado di fare qualcosa con la tabella virtuale, allora c'è una cosa. Ad esempio, il database può avere molti utenti, che sono in grado di utilizzare le tabelle virtuali in alcun modo. Ma questi utenti sono solo in una tabella: pg_user, cioè non ci sono tutti gli utenti elencati da nessuna parte che potrei prendere qualsiasi utente per verificare le tabelle virtuali numeriche per cui è in grado di scrivere query. In altre parole, nella tabella information_schema.table_privileges Vedo solo concedenti e utenti online. Per loro posso controllare i tipi di privilegio, ma per nessun utente offline.

Quindi, la versione estesa della mia domanda, secondo quello che ho fatto, potrebbe essere tali domande:

  1. È il mio percorso per trovare il numero di tabelle virtuali per l'utente specificato o no, cioè sto facendo bene o torto nel tentativo di analizzare information_schema.table_privileges tavolo?

  2. Perché è così che posso vedere tutti gli utenti del database elencati altrove, tranne PG_USER. E tavolo pg_user Non ha alcuna informazione sui privilegi utilizzando le tabelle virtuali.

  3. Se il mio percorso per trovare il numero di tabelle virtuali non è corretto, allora in che modo dovrei trovare quel numero?

Penso che sia tutto ciò che ho. Se ci sono qualche malinteso sulla mia domanda, cercherò di fornire ulteriori informazioni.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top