GNU/Linux >> Linux Esercitazione >  >> Panels >> Webmin

Server database PostgreSQL

Questa pagina copre il server di database PostgreSQL e spiega come utilizzare Webmin per gestire tabelle, utenti, gruppi e dati.

Contenuti

Introduzione a PostgreSQL

Come il server di database MySQL, PostgreSQL è un server di database gratuito che supporta più database e tabelle e consente ai client di interrogarli con SQL. È molto utile per i programmatori che scrivono applicazioni che necessitano di utilizzare un database per memorizzare le informazioni. Linguaggi popolari come Perl, C, Java e PHP hanno tutti API per accedere a un database PostgreSQL.

Un server PostgreSQL può ospitare più database e ogni database può contenere più tabelle. Una tabella a sua volta contiene campi, ognuno dei quali ha un tipo e una dimensione. Le tabelle contengono record, ognuno dei quali di solito contiene informazioni su alcuni oggetti, come una persona, un prodotto o un acquisto. I campi possono essere considerati come le colonne di una tabella e i record di dati effettivi come le righe. Alcuni campi possono anche contenere più valori, come una matrice.

SQL (che sta per Structured Query Language) è un linguaggio per estrarre o aggiornare i dati in un database. Quasi tutti i database utilizzano SQL e la sua sintassi è generalmente la stessa in tutti i diversi pacchetti di database, come Oracle, PostgreSQL e MySQL. Tuttavia, la sua sintassi non è trattata in questo capitolo.

I pacchetti per PostgreSQL vengono forniti con molte distribuzioni Linux e possono essere compilati e installati su quasi tutte le varietà di Unix. Il suo funzionamento è lo stesso su tutti i sistemi operativi, così come il modulo Webmin per gestirlo.

PostgreSQL consiste in un processo server che legge e scrive i file di database effettivi e un insieme di programmi client che comunicano con il server. Il più comunemente usato è il comando psql, che consente all'utente di eseguire query SQL e visualizzare i risultati. Nessuno dei client accede direttamente ai file del database, che viene lasciato interamente al server.

Tutti i file di database PostgreSQL sono archiviati in una directory come /var/lib/pgsql o /usr/local/pgsql. Inoltre, ci sono diversi file di configurazione di testo che influiscono sul funzionamento del server e dei client. Il più importante è pg_hba.conf, che elenca gli host client a cui è consentito connettersi al server. Questo è l'unico file che Webmin modifica direttamente:tutte le altre configurazioni del database vengono eseguite collegandosi al server del database, direttamente o tramite il comando psql.

Il modulo Server di database PostgreSQL

Questo modulo consente a un'amministrazione di gestire database, tabelle, campi e record in un server PostgreSQL. Per molti versi è molto simile al modulo MySQL Database Server. Quando fai clic sulla sua icona nella categoria Server di Webmin, la pagina principale mostra un elenco di database esistenti sul tuo sistema come mostrato in questa schermata:


La pagina principale del modulo PostgreSQL

Se Webmin rileva che PostgreSQL non è installato, non è stato inizializzato o non può essere connesso, la pagina principale non apparirà come mostrato nell'immagine sopra. Verrà invece visualizzato un qualche tipo di messaggio di errore. I più comuni sono trattati nei prossimi paragrafi.

Se viene visualizzato il messaggio PostgreSQL non è in esecuzione sul tuo sistema, dovrai avviare il server del database prima che questo modulo possa essere utilizzato per gestirlo. Basta fare clic su Avvia PostgreSQL Server pulsante in fondo alla pagina. Se vuoi che venga avviato all'avvio d'ora in poi, usa il modulo Bootup and Shutdown (trattato in Bootup and Shutdown) per creare una nuova azione per avviarlo. Sulla maggior parte delle distribuzioni Linux, i pacchetti PostgreSQL includono uno script di azioni di avvio chiamato postgres o postgresql che non è abilitato per impostazione predefinita.

Se PostgreSQL è eseguito da Webmin non conosce il nome utente e la password di amministrazione necessari per connettersi ad esso, e il modulo *PostgreSQL Login* verrà visualizzato nella pagina principale. Devi inserire dettagli di accesso validi per il tuo server di database, in genere per l'utente postgres che ha pieno accesso a tutti i database e le funzionalità. L'accesso come un altro utente con meno privilegi potrebbe funzionare all'inizio, ma non sarai in grado di utilizzare tutte le funzionalità del modulo. A volte PostgreSQL è impostato per autenticare gli utenti tramite il loro nome utente Unix, piuttosto che tramite un login e una password separati (la modalità di autenticazione ident). Se questo è il caso del tuo sistema, dovrai controllare Connetti come stesso utente Unix? casella sul modulo.

Se viene visualizzato un messaggio di errore come il file di configurazione dell'host PostgreSQL hba.conf non è stato trovato, la configurazione del modulo non è corretta o il server non è stato ancora inizializzato per la prima volta. Molte versioni pacchettizzate per sistemi Linux devono essere inizializzate prima di poter essere utilizzate, di solito eseguendo il comando initdb. Se il modulo sa come farlo sul tuo sistema, un Inizializza database verrà visualizzato il pulsante su cui è possibile fare clic per configurare il server per la prima volta.

Il messaggio di errore Il programma client PostgreSQL *psql non è stato trovato sul tuo sistema* indica che PostgreSQL non è affatto installato, o che si trova in una directory diversa da quella che Webmin si aspetta. Sui sistemi Linux e FreeBSD, il modulo presume che tu abbia installato i pacchetti per il database incluso con la tua distribuzione, mentre su altri sistemi operativi presume che sia stata eseguita un'installazione standard dal codice sorgente in /usr/local/pgsql. Se l'hai installato e il messaggio di errore continua a essere visualizzato, dovrai leggere la sezione *Configurazione del modulo del server di database PostgreSQL* per i dettagli su come regolare i percorsi utilizzati dal modulo.

Se stai usando Linux e PostgreSQL non è installato, usa il modulo Pacchetti software per installare tutti i pacchetti che iniziano con postgres dal CD di distribuzione o dal sito web. Spesso ce ne saranno diversi, come postgresql, postgresql-server e postgresql-devel. Per altri sistemi operativi, visitare http://www.postgresql.org/ per scaricare la distribuzione del codice sorgente, quindi compilarla e installarla.

Il modulo PostgreSQL utilizza i comandi SQL per eseguire azioni come la creazione di tabelle, l'aggiunta di campi e la modifica di record. Per eseguire questi comandi Webmin deve connettersi al server del database, operazione che può essere eseguita in due modi. Può eseguire il comando psql con i parametri corretti e analizzare il suo output, oppure utilizzare la libreria Perl DBI per connettersi direttamente.

Il primo metodo è sempre disponibile, perché il comando psql è sempre installato quando lo è il server di database. Tuttavia, non è del tutto affidabile poiché alcuni tipi di dati di tabella producono un output che non può essere sempre analizzato. Per questo motivo, è necessario installare i moduli DBI e DBD::Pg Perl. Se uno dei due manca, verrà visualizzato un messaggio nella parte inferiore della pagina principale che richiede di installarne uno o entrambi facendo clic su un collegamento. Questo ti porterà a una pagina nel modulo Perl Modules in cui DBI e/o DBD::Pg vengono scaricati e installati per te.

Creazione di un nuovo database

Quando PostgreSQL viene installato per la prima volta, di solito viene creato un database chiamato template1. Poiché questo viene utilizzato come modello per qualsiasi nuovo database, dovresti crearne uno personalizzato per contenere le tabelle in cui la tua applicazione può archiviare i dati. I passaggi per farlo sono :

  1. Nella pagina principale del modulo, fare clic sul collegamento *Crea un nuovo database* sopra o sotto la tabella delle icone del database esistente.
  2. Inserisci un nome univoco per esso nel Nome database campo. Dovrebbe essere composto solo da lettere, numeri e il carattere _.
  3. Quando il Percorso del file di database campo è impostato su Predefinito , i file che contengono effettivamente i dati del database verranno creati nella directory predefinita. Sui sistemi Linux, questo sarà solitamente qualcosa come /var/lib/pgsql/data - su altri sistemi operativi, sarà probabilmente /usr/local/pgsql/var. Per utilizzare una directory diversa, come utente Unix il database viene eseguito come (di solito postgres) prima crearlo con il comando mkdir e quindi eseguire initlocation con il nome della directory come parametro. Quindi seleziona il pulsante di opzione della sezione per il Percorso del file di database campo e inserire la directory nella casella di testo adiacente. Sfortunatamente, a meno che PostgreSQL non sia stato compilato per supportare percorsi di directory di dati assoluti, si verificherà un errore quando si fa clic su Crea pulsante. Per impostazione predefinita, questa funzione non è abilitata.
  4. Fai clic su Crea pulsante. Il database verrà aggiunto e verrai riportato alla pagina principale del modulo che dovrebbe includere la sua nuova icona. Se sul server esiste un database denominato template1, tutte le tabelle o altri oggetti in esso contenuti verranno copiati nel database appena creato. Questo può essere utile se vuoi aggiungere molti database con strutture simili.

Creazione di una nuova tabella

È possibile aggiungere una tabella a un database esistente in qualsiasi momento. Ogni tabella ha uno o più campi, ognuno dei quali ha un tipo, una dimensione e altri attributi. Per aggiungere una tabella, i passaggi da seguire sono :

  1. Nella pagina principale, fare clic sull'icona del database a cui si desidera aggiungere la tabella. Questo ti porterà alla pagina di modifica del database mostrata nella schermata qui sotto, su cui c'è un'icona per ogni tabella esistente.
  2. Inserisci il numero di campi che vuoi che la tua nuova tabella abbia nei Campi casella di testo accanto a Crea una nuova tabella pulsante, quindi fare clic sul pulsante. Viene visualizzato un modulo per l'immissione dei dettagli della nuova tabella e dei suoi campi iniziali.
  3. Scegli un nome per la tabella e inseriscilo nel Nome tabella campo. Il nome deve essere univoco all'interno del database e deve utilizzare solo lettere, numeri e il carattere _.
  4. Ogni riga dei Campi iniziali table definisce un campo che verrà aggiunto alla nuova tabella. Il tipo di campo che viene aggiunto dipende da ciò che inserisci per la riga in ciascuna delle seguenti colonne :
    • Nome campo Il nome di questo campo, che deve essere univoco all'interno della tabella e deve essere composto solo da lettere, numeri e _. Se lasciato vuoto, non verrà aggiunto alcun campo per questa riga.
    • Tipo di dati La selezione effettuata da questo menu determina il tipo di dati che possono essere memorizzati in questo campo. I tipi più comuni sono varchar per stringhe di testo a lunghezza variabile, int4 per i numeri interi e float4 per i numeri frazionari. Vedi i Tipi di campo sezione sottostante per maggiori dettagli.
    • Digita larghezza Questo campo può essere lasciato vuoto, nel qual caso verrà utilizzata la dimensione predefinita per il tipo scelto. In caso contrario, è necessario inserire un numero che è il numero di caratteri (per i campi char o varchar) o di cifre (per i campi numerici) che il campo può memorizzare. Alcuni tipi come blob e date non richiedono o consentono di specificare un tipo.
    • Opzioni campo Se Array? è selezionato, questo campo sarà un array in grado di memorizzare più di un valore. Se Consenti valori nulli? è selezionato, il database consentirà l'inserimento di valori SQL NULL in questo campo. Se Chiave primaria? è selezionato, questo campo farà parte della chiave primaria per la tabella. Tutte le tabelle dovrebbero avere una chiave, che di solito è il primo campo e di tipo int o varchar. Quando Unico? è selezionato, PostgreSQL impedirà a più di un record di avere lo stesso valore per questo campo. Anche i campi della chiave primaria sono automaticamente univoci.
  1. Quando hai finito di inserire i campi, clicca su Crea pulsante in fondo alla pagina. La tabella verrà aggiunta al database e verrai riportato alla pagina che elenca le tabelle esistenti.


La pagina di modifica del database

Aggiunta e modifica di campi

È possibile aggiungere nuovi campi alle tabelle e modificare i nomi dei campi esistenti. Tuttavia, non è possibile modificare il tipo di dimensione di un campo, a meno che non lo si elimini e lo si aggiunga nuovamente. Quando un campo viene creato, inizialmente conterrà sempre valori NULL nelle righe esistenti della tabella.

Per aggiungere un campo, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic sull'icona del database che contiene la tabella. Quindi fai clic sull'icona della tabella stessa:questo ti porterà a una pagina che elenca i nomi, i tipi e le dimensioni dei campi esistenti, come mostrato nello screenshot qui sotto.
  2. Seleziona un tipo per il nuovo campo dal menu accanto al pulsante *Aggiungi tipo di campo*. Quando si fa clic, il browser visualizza il modulo di creazione del campo per inserire il resto dei dettagli.
  3. Scegli un nome per questo campo composto solo da lettere, numeri e il carattere _ e inseriscilo nel Nome campo casella di testo. Non ci sono due campi nella stessa tabella che possono avere lo stesso nome.
  4. Per un campo char o varchar, inserisci il numero massimo di caratteri che può contenere nella Larghezza del tipo casella di testo. Per un campo numerico, devi invece inserire due numeri separati da una virgola, come 10,2 . Il primo è il numero massimo di cifre che un numero in questo campo può memorizzare e il secondo è il numero di cifre a destra della virgola decimale. Per altri tipi di campo, la Larghezza del tipo la casella di testo non viene visualizzata affatto.
  5. Se desideri che questo campo possa memorizzare più valori dello stesso tipo, seleziona per il campo Matrice? opzione.
  6. Fai clic su Crea per aggiungere il campo alla tabella, purché non ci siano errori nell'input.


La pagina di modifica della tabella

Una volta creato un campo, puoi solo cambiarne il nome, a differenza di MySQL dove è possibile modificarne il tipo o la dimensione. Tuttavia, ciò significa che non vi è alcun rischio per i dati in esso contenuti. Per rinominare un campo in una tabella, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic sull'icona del database contenente la tabella, quindi sull'icona della tabella. Questo ti porterà all'elenco dei campi nella tabella, un esempio dei quali è mostrato nello screenshot sopra.
  2. Fare clic sul nome del campo che si desidera modificare.
  3. Nel modulo di modifica, aggiorna il Nome campo casella di testo con un nuovo nome. Naturalmente questo deve seguire le stesse regole di denominazione che si applicano durante la creazione di un campo.
  4. Fai clic su Salva pulsante per eseguire la modifica nel database.

Eliminazione di un campo

A differenza di MySQL, il server di database PostgreSQL non ha un comando SQL integrato per eliminare un campo da una tabella. Tuttavia, è possibile effettuare la rimozione di un campo creando una nuova tabella temporanea priva del campo, eliminando la vecchia tabella e rinominandola temporanea con il nome originale. Funziona e Webmin può fare tutto automaticamente per te, tuttavia, alcune informazioni come indici e valori di campo predefiniti andranno perse nel processo. I dati effettivi nella tabella (a parte quelli nel campo eliminato) saranno comunque al sicuro.

Se la tabella non contiene indici o campi con valori predefiniti, puoi procedere e rimuovere un campo seguendo questi passaggi :

  1. Fare clic sull'icona del database contenente la tabella nella pagina principale del modulo, quindi sull'icona della tabella stessa.
  2. Fai clic sul Rilascia campo pulsante sul modulo di modifica della tabella, sotto l'elenco dei campi esistenti. Questo ti porta a una pagina che elenca tutti i campi nella tabella, ognuno dei quali ha un pulsante di opzione accanto sotto Rilascia questo .
  3. Seleziona il campo del pulsante di opzione che desideri rimuovere dalla tabella.
  4. Seleziona la casella Seleziona per confermare casella di controllo in fondo al modulo.
  5. Premi il Campo a discesa pulsante per rimuovere il campo scelto. Una volta eliminata, la stessa pagina verrà nuovamente visualizzata in modo da poterne rimuovere un'altra se lo desideri.

Tipi di campo

PostgreSQL ha un gran numero di tipi di campo, tutti supportati da Webmin. Tuttavia, non tutti sono particolarmente utili per il database medio. La migliore fonte di informazioni è la documentazione ufficiale su http://www.postgresql.org/docs/7.3/static/datatype.html

PostgreSQL ha diversi tipi per la memorizzazione di oggetti geometrici, come punto, percorso, box e cerchio, e tipi per informazioni di rete come inet, cidr e macaddr. Campi di tutti questi tipi possono essere creati e modificati utilizzando questo modulo, anche se non sono documentati sopra. Tuttavia, nessun altro database (come Oracle o MySQL) supporta questi tipi, quindi potrebbe essere saggio evitarli se vuoi che i tuoi programmi siano indipendenti dal database.

Visualizzazione e modifica del contenuto della tabella

Il modulo PostgreSQL consente di visualizzare e modificare il contenuto di qualsiasi tabella in qualsiasi database, anche quelli che non dispongono di chiavi primarie. A differenza del modulo MySQL, può identificare righe specifiche da modificare utilizzando la speciale colonna oid, che contiene un identificatore univoco per ogni record.

Per visualizzare il contenuto di una tabella, procedi nel seguente modo :

  1. Nella pagina principale, fare clic sull'icona del database che contiene la tabella, quindi sull'icona della tabella stessa.
  2. Nel modulo di modifica della tabella, fai clic su Visualizza dati pulsante in basso. Questo ti porterà a una pagina contenente una tabella delle prime 20 righe della tabella.
  3. Se la tabella contiene più righe di quante possono essere visualizzate su una pagina, l'inizio e la fine dell'intervallo visibile e il numero totale di righe verranno visualizzati in alto. Accanto ad esso ci sono le frecce sinistra e destra per passare ai 20 record successivi o precedenti. A differenza del modulo MySQL, non c'è modo di cercare record o passare a un numero di riga particolare in questa pagina.

Questa stessa pagina può essere utilizzata anche per modificare, eliminare o aggiungere record. I record da modificare devono prima essere selezionati utilizzando le caselle di controllo a destra di ogni riga, oppure il pulsante Seleziona tutto e *Inverti selezione link. Quando fai clic su *Modifica righe selezionate pulsante, la pagina verrà nuovamente visualizzata con i valori di tutti i record scelti nelle caselle di testo. Apporta le modifiche che desideri e fai clic su Salva pulsante in fondo alla pagina per aggiornare il database. Oppure premi Annulla se vuoi interrompere la modifica senza salvare le modifiche.

Per eliminare i record, selezionali utilizzando le stesse caselle di controllo e gli stessi link di selezione, quindi fai clic su Elimina righe selezionate pulsante. I record scelti verranno immediatamente rimossi dal database senza ulteriori conferme.

Per aggiungere un nuovo record, fai clic su Aggiungi riga pulsante sotto la tabella. Apparirà una riga aggiuntiva contenente caselle di testo vuote in cui inserire nuovi dettagli. Facendo clic su Salva aggiungerà il nuovo record alla tabella e sposterà il display in modo da poter vedere la nuova riga. In alternativa, puoi fare clic su Annulla se cambi idea sull'aggiunta di un record.

Eliminazione di tabelle e database

Questo modulo contiene anche pulsanti per eliminare una tabella da un database o un intero database e tutto ciò che contiene. Quando una tabella viene rimossa, tutti i record e i campi in essa contenuti andranno persi

Per rimuoverne uno, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic sull'icona del database da cui si desidera rimuovere la tabella, quindi sull'icona della tabella stessa.
  2. Fai clic sulla Tabella a discesa pulsante sotto l'elenco dei campi. Questo ti porterà a una pagina di conferma che ti chiede se sei sicuro e ti dice quanti record verranno eliminati.
  3. Per andare avanti, fai clic su Tabella a discesa pulsante di nuovo. Una volta rimosso, tornerai all'elenco delle tabelle sopravvissute nel database.

È anche possibile eliminare un intero database e tutte le tabelle e i record in esso contenuti. Qualsiasi database può essere rimosso, ma eliminare template1 è una cattiva idea poiché il modulo si connette ad esso quando recupera l'elenco di altri database e presume che esisterà sempre. Come al solito, a meno che tu non abbia eseguito un backup, non c'è modo di annullare l'eliminazione.

Supponendo che tu voglia davvero eliminare un database, segui questi passaggi :

  1. Nella pagina principale, fare clic sull'icona del database che si desidera rimuovere.
  2. Accedi al Rilascia database pulsante sotto l'elenco delle tabelle. Verrà visualizzata una pagina di conferma, che ti dice quante tabelle e record andranno persi se vai avanti.
  3. Per continuare con l'eliminazione, fai clic su Rilascia database pulsante e verrai riportato alla pagina principale del modulo al termine.

È possibile rimuovere il database template1 se modifichi il database PostgreSQL iniziale campo sulla configurazione del modulo in un altro database che non verrà rimosso.

Esecuzione di comandi SQL

Il modulo PostgreSQL fornisce anche una semplice interfaccia per eseguire comandi SQL su un database e visualizzarne l'output. I passaggi per utilizzarlo sono :

  1. Nella pagina principale, fai clic sull'icona del database in cui desideri eseguire i comandi.
  2. Fare clic su Esegui SQL pulsante sotto l'elenco delle icone della tabella. Questo ti porterà a una pagina per inserire comandi SQL, eseguire file di comandi e caricare dati nel database.
  3. Immettere un comando SQL qualsiasi nella casella di testo nella parte superiore della pagina e premere Esegui pulsante. Se si è verificato un errore nella sintassi SQL o il comando non può essere eseguito, verrà visualizzato il messaggio di errore di PosygreSQL. In caso contrario, verrà mostrata una tabella dei risultati dell'SQL (se presente). Solo le istruzioni SELECT producono risultati - UPDATE, INSERT e altri comandi che modificano i record no.

A differenza del modulo MySQL, non esiste una cronologia dei comandi o un supporto per l'esecuzione di più istruzioni SQL da un file.

Backup e ripristino di un database

Se uno dei database contiene informazioni importanti, è necessario eseguirne regolarmente il backup nel caso in cui un errore del disco o un errore SQL provochi la perdita di dati. È anche una buona idea creare un backup prima di eseguire alcune operazioni potenzialmente rischiose, come l'esecuzione di un'istruzione SQL complessa che modifica molti record.

A causa delle modifiche ai parametri dei comandi pg_dump e pg_restore, il modulo consente di creare e ripristinare backup solo quando si utilizza PostgreSQL versioni 7.2 e successive. Se stai utilizzando una versione precedente, i pulsanti spiegati nei passaggi seguenti non saranno visibili.

Per utilizzare il modulo per eseguire un backup, i passaggi da seguire sono :

  1. Nella pagina principale, fare clic sull'icona del database di cui si desidera eseguire il backup.
  2. Fare clic sul pulsante *Backup *sotto l'elenco delle tabelle. Questo ti porterà a un modulo per inserire la destinazione e le opzioni del backup.
  3. Nel Percorso file di backup campo, immettere il percorso completo del file in cui deve essere scritto il backup, ad esempio /tmp/backup.tar . Il file non deve esistere già - in tal caso, si verificherà un errore quando si preme il Backup pulsante.
  4. Dal menu Formato file di backup, selezionare il tipo di file da creare. Le opzioni disponibili sono:*Testo SQL semplice *Il file conterrà una serie di comandi SQL che ricreano le tabelle nel database e le ripopolano con i dati. Questo formato è utile in quanto i file di backup possono essere modificati manualmente, ma non è possibile includere oggetti di grandi dimensioni (come BLOB) in un backup SQL o ripristinarli in modo selettivo. *Archivio tar *Il file di backup sarà un file tar Unix standard, contenente vari file che specificano le strutture ei contenuti delle tabelle. Sono supportati oggetti di grandi dimensioni ed è possibile il ripristino selettivo. *Archivio personalizzato *Il file sarà nel formato di backup personalizzato di PostgreSQL, che è compresso e supporta oggetti di grandi dimensioni, esclusione dei dati e riordino al momento del ripristino.
  5. Per eseguire il backup, premi il pulsante *Backup *nella parte inferiore del modulo. Se tutto va bene, verrai reindirizzato all'elenco delle tabelle, altrimenti verrà visualizzata una pagina che mostra l'esecuzione del comando di backup e il relativo output di errore.

Se si dispone di un database utilizzato per un importante scopo di produzione, è necessario eseguirne il backup regolarmente, ad esempio una volta al giorno. Invece di seguire le istruzioni di cui sopra ogni giorno, puoi utilizzare il modulo Lavori Cron pianificati (trattato nel capitolo 10) per creare un lavoro che esegua il backup per te. Per scoprire quale comando eseguire, utilizzare le istruzioni precedenti per eseguire prima un backup e quindi visitare il modulo Registro azioni Webmin (trattato nel capitolo 54) per vedere il comando utilizzato.

Una volta che un file di backup è stato creato, può essere ripristinato sullo stesso sistema o su un altro server che esegue MySQL. I passaggi sono :

  1. Nella pagina principale del modulo, fare clic sull'icona del database in cui ripristinare il backup.
  2. Premi su Ripristina pulsante sotto l'elenco delle tabelle per visualizzare un modulo per la selezione del file di backup.
  3. Nel Percorso file di backup campo, inserisci il percorso completo del file contenente i dati di backup di PostgreSQL come /tmp/backup.tar . Questo file può essere in uno qualsiasi dei formati disponibili nel modulo di backup.
  4. Normalmente, il processo di ripristino tenterà di ricreare le tabelle prima di ripristinare i dati in esse. Per evitare ciò, modifica Ripristina solo i dati, non le tabelle? campo su . Funzionerà solo se tutte le tabelle nel backup esistono già. Tutti i dati attualmente contenuti verranno combinati con i record ripristinati.
  5. Normalmente, il processo di ripristino non riesce se nel database esiste già una tabella nel backup. Per eliminare le tabelle esistenti prima del ripristino, modificare Eliminare le tabelle prima del ripristino? campo su . Non ha senso impostare sia questo che il campo precedente su .
  6. Fai clic su Ripristina pulsante per ricaricare dati e tabelle dal file di backup. Se qualcosa va storto, verrà visualizzato un messaggio di errore che mostra l'output del comando pg_restore, altrimenti verrai riportato all'elenco delle tabelle nel database.

Gestione degli utenti PostgreSQL

Come ci si aspetterebbe, il server di database PostgreSQL non consente semplicemente a nessuno di connettersi e iniziare a manipolare i dati. Al contrario, verifica i client richiedendo loro di inviare un nome utente e una password, che confronta con il proprio elenco di utenti interni. Questo elenco di utenti del database è totalmente separato dall'elenco degli utenti Unix nel file /etc/passwd.

Per impostazione predefinita, esisterà solo l'utente postgres e avrà pieno accesso a tutti i database e le tabelle. Se stai scrivendo un'applicazione che utilizza un database, è necessario creare un nuovo utente per consentire a quell'applicazione di accedere come. Se più persone accederanno al tuo database usando il comando psql o altri programmi client, ognuno dovrebbe avere il proprio login e password.

Per aggiungere un nuovo utente, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic su Utenti PostgreSQL icona. Questo ti porterà a un elenco degli utenti esistenti e delle loro capacità, come mostrato nello screenshot qui sotto.
  2. Fai clic sul link Crea un nuovo utente sopra o sotto l'elenco, che farà apparire il modulo di creazione dell'utente.
  3. Inserisci un nome univoco per l'utente, composto solo da lettere, numeri e il carattere _, nel Nome utente campo.
  4. Per impostare una password per questo utente, seleziona il secondo pulsante di opzione nella Password campo e inserisci una password nella casella di testo accanto ad essa. Se Nessuno viene selezionata, l'utente non sarà in grado di accedere a meno che il server non sia stato configurato per consentire connessioni senza password (come spiegato nella sezione *Limitazione dell'accesso client*).
  5. Se desideri che questo utente sia in grado di creare i propri database, modifica Puoi creare database? campo su No . Solo l'utente di amministrazione principale (postgres) deve davvero essere in grado di farlo.
  6. Per concedere a questo utente i diritti per modificare e creare utenti PostgreSQL, modifica Puoi creare utenti? campo su . Anche in questo caso, normalmente dovrebbe essere lasciato come No .
  7. Il valido fino a il campo controlla per quanto tempo questo utente può essere utilizzato. Se Per sempre è selezionata, non avrà data di scadenza - ma se viene scelta la seconda opzione e una data in formato AAAA-MM-GG inserita nel campo di testo, il conto non sarà più utilizzabile dopo tale data.
  8. Fai clic su Crea pulsante per aggiungere il nuovo account all'elenco utenti di PostgreSQL. Persone o programmi potranno accedere immediatamente come questo utente. Spesso il server del database è configurato per impostazione predefinita per consentire a qualsiasi utente locale di accedere senza la necessità di fornire una password. Per modificare questa impostazione, consulta la sezione Limitazione dell'accesso client sezione.
  9. Per configurare esattamente a quali tabelle e viste può accedere questo nuovo utente, segui le istruzioni nella sezione *Modifica dei permessi degli oggetti*.


Utenti PostgreSQL esistenti

Una volta che un utente è stato creato, può essere modificato facendo clic sul suo nome nell'elenco degli utenti mostrato nello screenshot sopra. Questo ti porta al modulo di modifica che è quasi identico al modulo di creazione dell'utente, tranne per il fatto che il nome dell'utente non può essere modificato. Una volta che hai finito di modificare la password, la data di scadenza e altri campi, clicca su Salva pulsante per rendere attive le modifiche.

È anche possibile eliminare un utente facendo clic su Elimina pulsante nella sua pagina di modifica. Fai attenzione a non rimuovere l'utente postgres, poiché è normalmente utilizzato da questo modulo Webmin per accedere a PostgreSQL. In effetti, anche la modifica di questo utente può causare problemi se si imposta una data di scadenza o si toglie la possibilità di creare database o altri utenti.

Come molti altri moduli, questo modulo può essere configurato per creare, aggiornare o eliminare automaticamente un utente PostgreSQL quando un utente Unix viene rispettivamente aggiunto, modificato o rimosso. Questo può essere utile se si consente ad alcuni utenti Unix sul proprio sistema di accedere ai database e si desidera mantenere sincronizzate le proprie password.

Per impostare la sincronizzazione, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic su Utenti PostgreSQL icona e scorri verso il basso fino al modulo sotto l'elenco degli account esistenti.
  2. Se vuoi che venga creato un nuovo utente PostgreSQL per ogni nuovo utente Unix, seleziona la casella *Aggiungi un nuovo utente PostgreSQL quando viene aggiunto un utente Unix*. Tuttavia, gli utenti creati automaticamente non disporranno di autorizzazioni specifiche per gli oggetti.
  3. Se vuoi che gli utenti PostgreSQL cambino le loro password quando succede la stessa cosa agli utenti Unix corrispondenti, seleziona la casella *Aggiorna un utente PostgreSQL quando l'utente Unix corrispondente viene modificato*.
  4. Per eliminare un utente PostgreSQL contemporaneamente all'utente Unix con lo stesso nome, selezionare la casella *Elimina un utente PostgreSQL quando l'utente Unix corrispondente viene eliminato*.
  5. Premi Salva per rendere attive le nuove impostazioni di sincronizzazione.

Gestione dei gruppi PostgreSQL

PostgreSQL mantiene il proprio elenco interno di gruppi, ognuno dei quali può contenere zero o più utenti. I gruppi sono particolarmente utili quando si assegnano le autorizzazioni agli oggetti, poiché consentono di concedere l'accesso a una tabella o a una vista a più utenti contemporaneamente. A parte questo, non svolgono alcun ruolo nel controllo dell'accesso o nell'autenticazione.

Per creare un gruppo, i passaggi da seguire sono :

  1. Nella pagina principale del modulo, fare clic su Gruppi PostgreSQL icona. Il tuo browser visualizzerà una tabella dei gruppi esistenti e dei loro membri, se presenti. Quando PostgreSQL viene installato per la prima volta, non viene definito alcun gruppo.
  2. Fai clic su Crea un nuovo gruppo collegamento per accedere al modulo di creazione del gruppo.
  3. Inserisci un nome composto da lettere, numeri e il carattere _ nel Nome del gruppo campo. Nessun altro gruppo o utente può avere lo stesso nome.
  4. Lascia l'ID gruppo campo invariato, in quanto l'ID viene scelto automaticamente da Webmin.
  5. Seleziona gli utenti che saranno membri di questo gruppo dai Membri elenco. Nella maggior parte dei browser, puoi fare clic tenendo premuto ctrl per selezionare più di un nome utente o fare clic tenendo premuto Maiusc per selezionare un intero intervallo.
  6. Fai clic su Crea per aggiungere il gruppo. È ora possibile assegnargli le autorizzazioni per gli oggetti, come spiegato in Modifica delle autorizzazioni per gli oggetti sezione.

Proprio come un utente, un gruppo che hai creato può essere modificato facendo clic sul suo nome nell'elenco nella pagina Gruppi di PostgreSQL, cambiando il nome o l'elenco dei membri nel modulo di modifica e premendo Salva . Oppure può essere eliminato facendo clic su Elimina pulsante sullo stesso modulo.

Limitazione dell'accesso client

Di solito, la configurazione predefinita di PostgreSQL consente a qualsiasi utente di connettersi al server del database dallo stesso sistema senza dover effettuare il login, ma impedisce l'accesso remoto. Se si desidera consentire ai client di connettersi da altri sistemi (ad esempio se si sta configurando un server di database a cui si accederà da un server Web separato), è necessario configurare PostgreSQL per consentirlo.

Per concedere l'accesso a un altro host, segui queste istruzioni :

  1. Nella pagina principale del modulo, fai clic su Host consentiti icona. Verrai indirizzato a una pagina che elenca gli host da cui sono consentite le connessioni, i database a cui i client possono accedere e le modalità di autenticazione utilizzate. In genere, inizialmente saranno consentite solo le connessioni locali e quelle da 127.0.0.1.
  2. Fai clic su Crea un nuovo host consentito collegamento sopra o sotto l'elenco per visualizzare il modulo di creazione dell'host.
  3. Nell'Indirizzo host campo, seleziona Host singolo e immettere l'IP o il nome host del sistema client remoto nel campo adiacente. In alternativa, per consentire un'intera LAN, seleziona Rete e inserisci l'indirizzo di rete (come 192.168.1.0 ) e netmask (come 255.255.255.0 ) nei campi accanto.
  4. Per concedere all'host specificato o alla rete l'accesso a tutti i database sul tuo server, lascia il Database campo impostato su Tutti i database . In caso contrario, effettuare una selezione dal menu per limitare il client solo a quello. Se desideri concedere a un client l'accesso a due database, dovrai aggiungere due voci host ciascuna con una scelta diversa selezionata da Database menù.
  5. Nella Modalità di autenticazione campo, seleziona Password in chiaro . L'opzione Nessuna autenticazione richiesta consentirà inoltre agli utenti del sistema client di connettersi, ma senza dover fornire una password valida. Chiaramente, questo non è molto sicuro.
  6. Premi Crea per aggiungere la nuova voce Consenti host.

Se il tuo sistema ha più utenti, ognuno dei quali ha un dato in un database PostgreSQL che appartiene a loro, non dovresti consentire loro di accedere al server del database senza una password. Per impostazione predefinita, PostgreSQL consente esattamente questo, che non è particolarmente sicuro! Fortunatamente, può essere facilmente risolto. Tuttavia, c'è il rischio di bloccare Webmin stesso fuori dal database, poiché spesso è impostato per impostazione predefinita per accedere quando l'utente postgres senza una password.

Segui le istruzioni seguenti per riconfigurare il modulo per l'accesso con una password e per costringere gli utenti locali a fare la stessa cosa :

  1. Nella pagina principale del modulo, fare clic su Utenti PostgreSQL icona e quindi sull'utente postgres per visualizzare il suo modulo di modifica.
  2. Seleziona il secondo pulsante di opzione per il campo Password e inserisci una bella password sicura nel campo di testo adiacente. Quindi fai clic su Salva .
  3. Torna alla pagina principale del modulo e clicca su Module Config collegamento.
  4. Nella Password di amministrazione campo, seleziona Imposta su e inserisci la password che hai scelto nel campo di testo. Quindi fai clic su Salva in fondo al modulo.
  5. Fai clic su Host consentiti icona, quindi su Connessione locale nell'Indirizzo host colonna. Modifica il campo *Modalità di autenticazione* in Password in chiaro e fai clic su Salva pulsante. Dopo che il tuo browser è tornato all'elenco degli host consentiti, fai clic su 127.0.0.1 e fai la stessa modifica.
  6. Ritorna alla pagina principale del modulo. Se tutto è andato bene, sarai comunque in grado di vedere e gestire i database e tutti gli utenti richiederanno una password per connettersi.

Quando un client si connette al server del database, PostgreSQL controlla in ordine le voci dell'host nella pagina Host consentiti. Non appena ne trova uno che corrisponda all'indirizzo del client e al database richiesto, viene utilizzata la modalità di autenticazione per quella voce. Puoi utilizzare questa funzione per bloccare determinati host e consentire tutti gli altri creando una voce host con il campo *Indirizzo host *impostato sull'IP che desideri bloccare e la Modalità di autenticazione impostato su Rifiuta connessione . Questa voce deve apparire nell'elenco sopra qualsiasi voce più ampia che consentirebbe lo stesso client.

Poiché le nuove voci di host consentite vengono sempre aggiunte alla fine dell'elenco, la pagina ha una funzione per spostarsi. Le frecce su e giù sotto Sposta È possibile fare clic sulla colonna nell'elenco per spostare una voce rispettivamente in alto o in basso di una posizione.

Modifica dei privilegi degli oggetti

Ogni oggetto PostgreSQL (tabella, vista, indice o sequenza) ha un proprietario, che è l'utente che lo ha creato. Per impostazione predefinita, solo il proprietario può selezionare i dati o aggiornare i record in un oggetto, il che non è molto utile se il tuo server ha più utenti che avranno tutti bisogno di accedere alle stesse tabelle. Fortunately, it is possible to grant access to database objects to other users or groups, by following the steps below :

  1. On the module's main page, click on the Granted Privileges icon. Assuming you actually have some tables in your databases, this will bring up a page listing all existing objects and their current permissions.
  2. Click on the name of the object that you want to grant access to, which will take you to its privileges editing form.
  3. The Grant privileges to table lists all users and groups to whom access has been granted, followed by a blank row for adding a new one. Most of the time, it will just contain that one empty row though. In the User column, select the name of the user or group to grant privileges to from the menu, or choose Everyone to grant access to all PostgreSQL users. In the Privileges column, check the boxes for the rights that should be granted to the chosen user or group. The available options are their meanings are :*SELECT *When checked, the user will be able to view records in this table or view with an SQL SELECT query. *UPDATE *When chosen, this option gives users the ability to update existing records in the table. *INSERT *This option gives users the right to add new records to the table with an SQL INSERT statement. *DELETE *When checked, the user will be able to delete existing records from the table. *RULE *Allows the user to create of rules on the table or view. A rule is an piece of SQL code that is executed to transform data inserted, updated or deleted in the table. *REFERENCES *Allows the user to create a field that references this table as a foreign key. *TRIGGER *When checked, the user will be able to create triggers for this table. Because the table only displays one empty row at a time, you will need to save and re-edit the object permissions if you want to grant access to more than one user. If several users are to be given the same permissions, it is better to put them in a group and grant access to the group instead. # Hit the Save button at the bottom of the page to make the new permissions active.

Unlike MySQL, there is no way to give a user access to an entire database, or just to a field within a table. All privileges are granted at the table level only.

Module access control

As WebminUsers explains, it is possible to create a Webmin user who has access to only a subset of the features of some modules. In the case of the PostgreSQL Database Server module, you can limit a user to being able to manage tables and fields in specific databases, and prevent him from editing users, groups or granted permissions. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.

Once a user has been given access to the module, to limit him to only certain databases the steps to follow are :

  1. In the Webmin Users module, click on PostgreSQL Database Server next to the name of a user or group who has access to the module.
  2. On the access control form, change the Can edit module configuration? campo su No . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
  3. In the Databases this user can manage field, choose the Selected opzione. Then select the databases he should have access to from the list below.
  4. Change the Can create new databases? campo su No . There is no reason that a restricted user of this type should be able to add new databases.
  5. Unless you want the user to be able to delete his own databases, change the Can drop databases? campo su No . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
  6. Change the Can stop and start PostgreSQL server? campo su No .
  7. Change the Can edit users, groups, hosts and grants? campo su No , so that he cannot create a new PostgreSQL user with access to all databases.
  8. Set the Can create backups? campo su No , as giving a user the rights to make a backup may allow him to overwrite files on your system.
  9. The Can restore backups? field can be safely set to Yes , as there is no danger in allowing a user to re-load data into his databases from a backup file.
  10. Finally, to make the new access control restrictions active, click Save .

Configuring the PostgreSQL Database Server module

Like most other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of its main page. Those fields listed under *Configurable option* relate to its connection to the database and user interface, while those under System configuration define the paths to the PostgresSQL programs and files.

Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed PostgreSQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of PostgreSQL installed and are configuring a clone of the module (covered in WebminConfiguration) to manage the second install.


Webmin
  1. Che cos'è un server di database e a cosa serve?

  2. Database di rilascio di PostgreSQL con esempi

  3. Come creare un database in PostgreSQL

  4. Jabber IM Server

  5. Come proteggere PostgreSQL Server

Come installare PostgreSQL Database Server CentOS 8

Server LDAP

Server database MySQL

Come installare PostgreSQL su Ubuntu 16.04

Come creare un database PostgreSQL?

15 Pratici comandi di amministrazione del database PostgreSQL