Thread: List user databases

List user databases

From
Igor Korot
Date:
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.



Re: List user databases

From
Ian Lawrence Barwick
Date:
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



Re: List user databases

From
Adrian Klaver
Date:
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




Re: List user databases

From
Julien Rouhaud
Date:
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.



Re: List user databases

From
Ian Lawrence Barwick
Date:
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