List user databases

Started by Igor Korotover 3 years ago5 messagesgeneral
Jump to latest
#1Igor 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?

Thank you.

#2Ian Lawrence Barwick
barwick@gmail.com
In reply to: Igor Korot (#1)
Re: List user databases

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

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Ian Lawrence Barwick (#2)
Re: List user databases

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

#4Julien Rouhaud
rjuju123@gmail.com
In reply to: Adrian Klaver (#3)
Re: List user databases

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.

#5Ian Lawrence Barwick
barwick@gmail.com
In reply to: Adrian Klaver (#3)
Re: List user databases

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