SOMMARIO: Questo articolo copre le istruzioni ALTER DATABASE, RENAME DATABASE e DROP DATABASE e l’uso dell’istruzione CREATE DATABASE WITH TEMPLATE per copiare un database.
1. Dichiarazioni ALTER DATABASE
a. Cambiare il proprietario del database
b. Impostare il database Template
c. Limitare le nuove connessioni per un database specifico
d. Limitare il limite di connessione per un database specifico
e. Cambiare il Default Tablespace per il database
2. RENAME DATABASE
3. DROP DATABASE
4. Copiare la struttura e i dati del database
Questo post esamina alcuni dei comandi disponibili per gestire i database PostgreSQL dal prompt PSQL. Rivedremo i metodi per modificare, rinominare, eliminare e copiare un database.
Riassumiamo alcuni comandi PostgreSQL di base:
1. Sintassi per la creazione di database:
CREATE DATABASE name user_name ] template ] encoding ] lc_collate ] lc_ctype ] tablespace ] connlimit ] ]
2. Per ottenere una lista di database nel cluster attuale:
a. \l+
b. select * from pg_database ;
- Dichiarazioni ALTER database
- Modificare il proprietario del database
- Sintassi
- Esempio
- Impostazione del database template
- Sintassi
- Esempio
- Restrizione di nuove connessioni per un database specifico
- Sintassi
- Esempio
- Restrizione del limite di connessione per un database specifico.
- Sintassi
- Esempio
- Cambiare il tablespace predefinito per il database
- Sintassi
- Esempio
- Dichiarazioni di database RENAME
- Sintassi
- Esempio
- DROP dichiarazioni del database
- Sintassi
- Esempio
Dichiarazioni ALTER database
Le dichiarazioni ALTER database possono essere usate per cambiare gli attributi esistenti del database di destinazione.
Modificare il proprietario del database
Per modificare il proprietario del database, l’utente collegato deve essere il proprietario del database ed essere anche un membro diretto o indiretto del nuovo ruolo proprietario, e l’utente collegato deve avere il privilegio CREATEDB.
Sintassi
ALTER DATABASE <database_name> OWNER TO <new_owner>;
Esempio
ALTER DATABASE test OWNER TO user;
Impostazione del database template
Di default, abbiamo solo due database template presenti in un cluster-template0 e template1. Altri database non possono essere usati come template per impostazione predefinita. Nel caso tu abbia bisogno di creare un modello di database personalizzato per il tuo ambiente, puoi usare questa opzione.
Sintassi
ALTER DATABASE <database_name> WITH IS_TEMPLATE = true;
Esempio
ALTER DATABASE test WITH IS_TEMPLATE = true;
Restrizione di nuove connessioni per un database specifico
Questa opzione è molto utile per mantenere il database. Puoi limitare le nuove connessioni a un database specifico durante la finestra di manutenzione del database. Per abilitare questa opzione, nessun utente è connesso al database di destinazione.
Sintassi
ALTER DATABASE <database_name> WITH ALLOW_CONNECTIONS = false;
Esempio
ALTER DATABASE test2 WITH ALLOW_CONNECTIONS = false;
Restrizione del limite di connessione per un database specifico.
Per sicurezza e prestazioni ottimali, puoi limitare il numero di connessioni che possono connettersi al database di destinazione. Per impostazione predefinita, il valore di questo parametro è illimitato, cioè -1, per ogni database.
Sintassi
ALTER DATABASE <database_name> WITH CONNECTION LIMIT <max_number_of_connections>;
Esempio
ALTER DATABASE test2 WITH CONNECTION LIMIT 10;
Cambiare il tablespace predefinito per il database
Puoi spostare fisicamente gli oggetti del tablespace predefinito come tabelle e indici dal tablespace predefinito a un nuovo tablespace personalizzato. Il nuovo tablespace di default deve essere vuoto per questo database, e nessuno può essere connesso al database durante questa attività.
Nota: Il proprietario del database o un superutente deve fare questa modifica, e l’utente deve avere i privilegi CREATE per il nuovo tablespace.
Sintassi
ALTER DATABASE <database_name> SET TABLESPACE <custom_tablespace_name>;
Esempio
ALTER DATABASE test SET TABLESPACE custom_tblspc;
Dichiarazioni di database RENAME
Si può cambiare il nome del database corrente usando RENAME. Tuttavia, non puoi rinominare il database mentre è accessibile da altre connessioni.
Nota: Il proprietario del database o il superutente deve fare questa modifica, e l’utente deve avere i privilegi di CREATEDB.
Sintassi
ALTER DATABASE <old_database_name> RENAME TO <new_database_name>;
Esempio
ALTER DATABASE test RENAME TO test123;
DROP dichiarazioni del database
Puoi eliminare il database di destinazione. Questo rimuove le voci di catalogo per il database e cancella la directory contenente i dati. Può essere eseguito solo dal proprietario del database. Inoltre, non può essere eseguito mentre tu o chiunque altro è connesso al database di destinazione.
Nota: DROP DATABASE non può essere annullato.
Sintassi
DROP DATABASE <database_name>;
Esempio
DROP DATABASE test2;