Thread: List user databases
Hi, ALL, According to https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/, there are generally 3 system DBs. However I'm confused with the word general. How many system databases can be made on a PG server? Thank you.
2022年11月10日(木) 13:41 Igor Korot <ikorot01@gmail.com>: > > Hi, ALL, > According to https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/, > there are generally 3 system DBs. > > However I'm confused with the word general. > How many system databases can be made on a PG server? template0 and template1 are the mandatory system databases which cannot be dropped. "postgres" is created by default for operational convenience, but is not essential and can be removed if you really want to. Regards Ian Barwick
On 11/9/22 20:57, Ian Lawrence Barwick wrote: > 2022年11月10日(木) 13:41 Igor Korot <ikorot01@gmail.com>: >> >> Hi, ALL, >> According to https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/, >> there are generally 3 system DBs. >> >> However I'm confused with the word general. >> How many system databases can be made on a PG server? > > template0 and template1 are the mandatory system databases which > cannot be dropped. Actually that is not strictly true: https://www.postgresql.org/docs/current/manage-ag-templatedbs.html " Note template1 and template0 do not have any special status beyond the fact that the name template1 is the default source database name for CREATE DATABASE. For example, one could drop template1 and recreate it from template0 without any ill effects. This course of action might be advisable if one has carelessly added a bunch of junk in template1. (To delete template1, it must have pg_database.datistemplate = false.) The postgres database is also created when a database cluster is initialized. This database is meant as a default database for users and applications to connect to. It is simply a copy of template1 and can be dropped and recreated if necessary. " > > "postgres" is created by default for operational convenience, but is > not essential and can > be removed if you really want to. > > Regards > > Ian Barwick > > -- Adrian Klaver adrian.klaver@aklaver.com
Hi, On Wed, Nov 09, 2022 at 09:16:40PM -0800, Adrian Klaver wrote: > On 11/9/22 20:57, Ian Lawrence Barwick wrote: > > > > template0 and template1 are the mandatory system databases which > > cannot be dropped. > > Actually that is not strictly true: > > https://www.postgresql.org/docs/current/manage-ag-templatedbs.html > > " > Note > > template1 and template0 do not have any special status beyond the fact that > the name template1 is the default source database name for CREATE DATABASE. > For example, one could drop template1 and recreate it from template0 without > any ill effects. This course of action might be advisable if one has > carelessly added a bunch of junk in template1. (To delete template1, it must > have pg_database.datistemplate = false.) > > The postgres database is also created when a database cluster is > initialized. This database is meant as a default database for users and > applications to connect to. It is simply a copy of template1 and can be > dropped and recreated if necessary. > " And one important thing about template0 is that postgres will assume that it only contains identifiers with plain ASCII characters, so that the on-disk data is compatible with any encoding (at least any supported server encoding, stuff like EBCDIC clearly wouldn't play well with that assumption), and can therefore be used to create a new database with a different encoding from template1 (or another template database). Breaking that assumption is usually a very bad idea.
2022年11月10日(木) 14:16 Adrian Klaver <adrian.klaver@aklaver.com>: > > On 11/9/22 20:57, Ian Lawrence Barwick wrote: > > 2022年11月10日(木) 13:41 Igor Korot <ikorot01@gmail.com>: > >> > >> Hi, ALL, > >> According to https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/, > >> there are generally 3 system DBs. > >> > >> However I'm confused with the word general. > >> How many system databases can be made on a PG server? > > > > template0 and template1 are the mandatory system databases which > > cannot be dropped. > > Actually that is not strictly true: > > https://www.postgresql.org/docs/current/manage-ag-templatedbs.html > > " > Note > > template1 and template0 do not have any special status beyond the fact > that the name template1 is the default source database name for CREATE > DATABASE. For example, one could drop template1 and recreate it from > template0 without any ill effects. This course of action might be > advisable if one has carelessly added a bunch of junk in template1. (To > delete template1, it must have pg_database.datistemplate = false.) OK, "cannot be dropped unless you manually convert them into non-template databases" :). Regards Ian Barwick