How To List Databases in PostgreSQL
Published: 2023-06-29 09:36:06

**A single PostgreSQL server can contain many databases, and there are several ways to list them all. Explore three different approaches to get the list of databases in a PostgreSQL server.**

When working with PostgreSQL, developers, and DBAs are certainly interested in listing the databases available on your server. This is one of the most common operations performed by developers working on PostgreSQL. There are several ways to achieve that, depending on preferences, requirements, and experience.

In this article, you will find out more about three different approaches to showing PostgreSQL databases:

- With a command-line command
- With a query
- In a database client

Let’s dig into PostgreSQL database listing!

## Listing Databases With the psql Command-Line Tool
psql allows you to interact with a PostgreSQL server via the command line. “psql” stands for "PostgreSQL interactive terminal" and allows you to:

- Create databases, tables, and users.
- Run queries on a Postgres database.
- Launch commands to get metadata about your databases.

In detail, `psql` provides the `\l` command to get the list of databases in a PostgreSQL server. Follow the steps below to learn how to use `psql` to list databases in the terminal:

1. Connect to the PostgreSQL database server with psql command-line tool:

```
$ psql -U username
```

Replace `username` with the username of the PostgreSQL user you want to log in with. psql will ask you to enter the password associated with the user. Type it and press Enter to connect to the database.

Keep in mind that users can observe executed commands by observing the history of commands in the CLI. This will allow them to see the password you typed. If you want to prevent entering the password for security reasons, you can:

- Set the password in the [PGPASSWORD](https://www.postgresql.org/docs/current/libpq-envars.html) environment variable
- Add the password to the [.pgpass ](https://www.postgresql.org/docs/current/libpq-pgpass.html)file

2.List the databases with:

```
$ \l
```

["This will return a table containing the databases of the PostgreSQL server in the format below:"]
<br \>
![The result of the "\l" command](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n1np8v9gox9dubei1aja.png)
<figure><figcaption>The result of the "\l" command</figcaption></figure>
<br \>
Note that `\l` is the shortened version of the `\list` command. So, `\list` will return the same result.

Use `\l+` or \list+ to get additional information about each database, such as the size in Kb and its description:
<br \>
![The result of the "\l+" command. Note that the table now involves more columns](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbu1tx2phra8t8e89azc.png)
<figure><figcaption>The result of the "\l+" command. Note that the table now involves more columns</figcaption></figure>
<br \>

## Listing PostgreSQL Databases With a Query
If the command line is not your thing, keep in mind that you can also list databases in Postgres by querying [pg_catalog.pg_database](https://www.postgresql.org/docs/current/catalog-pg-database.html). Specifically, that Postgres catalog contains a row for each database in the server.

Retrieve the list of databases in PostgreSQL with the query below:

```
1 SELECT * FROM pg_catalog.pg_database
```

![Executing the query in DbVisualizer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hj4cf5n6r51cu9tz5uiz.png)
<figure><figcaption>Executing the query in DbVisualizer</figcaption></figure>
<br \>
The `datname` column stores the name of each database. Note that this table also includes the database templates used by PostgreSQL to initialize a new database when a `CREATE DATABASE` query is launched. Filter them out with the query below:

```
1 SELECT * FROM pg_catalog.pg_database
2 WHERE datistemplate = false;
```

![Note that the template databases are no longer part of the resulting table](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpbg6tiy195yvl12v12z.png)
<figure><figcaption>Note that the template databases are no longer part of the resulting table</figcaption></figure>
<br \>
## View Databases in a Postgres Client
The last and easiest way to show all databases in PostgreSQL is through a database client, such as [DbVisualizer](https://www.dbvis.com/). This powerful tool allows you to visually connect and manage your Postgres databases.

In detail, DbVisualizer is a [PostgreSQL client](https://www.dbvis.com/database/postgresql/) with extended support for pgSQL specific object types and features. All you have to do to view the databases available in a PostgreSQL server in DbVisualizer is:

1. Connect to your PostgreSQL server as explained in [the official doc](https://confluence.dbvis.com/display/UG100/Setting+Up+a+Connection+Manually?_ga=2.221942808.1695530568.1685345088-628703149.1635148413&_gac=1.41166614.1683703560.EAIaIQobChMI3_ixwJzq_gIV82DCCh2lqgeiEAEYASAAEgJlofD_BwE&_gl=1*318fm9*_ga*NjI4NzAzMTQ5LjE2MzUxNDg0MTM.*_ga_PTZV59MQGC*MTY4NTUzMjk1NS43MzAuMS4xNjg1NTMzNDEyLjI2LjAuMA..).
2. Select your target server in the “Connections” menu on the left, right-click on it, and choose “Connect.”
 <br \>
![Connecting to a new database in DbVisualizer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qiqymhdxtivpv5za9nqy.png)
<figure><figcaption>Connecting to a new database in DbVisualizer.</figcaption></figure>
<br \>
3. Open the “Databases” dropdown to see the list of databases.
 <br \>
![The list of databases available in DbVisualizer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x0aw9de1r435il7ns0ry.png)
<figure><figcaption>The list of databases available in DbVisualizer.</figcaption></figure>
<br \>

Fantastic! DbVisualizer allows you to view all PostgreSQL databases with just a couple of clicks.

## Conclusion
In this article, you understood that listing databases in PostgreSQL is a simple task, and there are at least three methods to achieve that. The first involves a command-line command, the second a query, and the third a GUI tool. In particular, a database client with [full support for PostgreSQL such as DbVisualizer](https://www.dbvis.com/database/postgresql/) allows you to visually deal with databases and provide several advanced features, such as query optimization. [Download DbVisualizer for free!](https://www.dbvis.com/download/)

## FAQ

### How to list PostgreSQL databases with a single command?
You can get the list of databases available in a Postgres server with a single command with:

```
$ psql -U -l
```

Replace  with an actual username. This command will connect to the PostgreSQL server and then directly launch the `\l` command to get the list of databases.

How to get the list of tables in a database with `psql`?
If you want to get the list of tables contained in a specific database, first connect to a database in psql with:

```
$ \c
```

Then, use the `\dt` command:

```
$ \dt
```

This will return all the tables in the selected database.

### What is the easiest way to list databases in PostgreSQL?

The easiest way to show databases in PostgreSQL is through a database client. This is because a PostgreSQL client gives you the ability to see the databases available on the server in a user-friendly interface. Such an approach does not involve queries or commands in the terminal and makes it a perfect solution for both experienced and non-experienced users.

### How to use pgAdmin to view the list of databases in PostgreSQL?
To use pgAdmin to view a list of databases in PostgreSQL, open pgAdmin and connect to your PostgreSQL server. Then, expand the Servers group in the left panel to see a list of servers. Click on the server that you want to list the databases for, and then expand the Databases group to see a list of databases.

### Are there any security concerns when listing databases in PostgreSQL?
If the permissions on the PostgreSQL server have been not set correctly, a user can see databases they should not have access to. To mitigate this risk, it is important to assign the right groups and limit the use of superuser accounts to only when necessary.

## About the author
Antonello Zanini is a software engineer, and often refers to himself as a technology bishop. His mission is to spread knowledge through writing.