← Назад к вопросам

Какая команда выводит список баз в PostgreSQL?

1.3 Junior🔥 171 комментариев
#Базы данных

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Команды для вывода списка баз данных в PostgreSQL

В PostgreSQL существует несколько способов вывести список баз данных, в зависимости от того, находитесь ли вы внутри среды psql (интерактивного терминала) или работаете из командной строки ОС.

1. Использование интерактивного терминала psql

Если вы уже подключены к PostgreSQL через утилиту psql, вы можете использовать следующие команды:

  • \l – стандартная команда для вывода списка всех баз данных с подробной информацией (имя, владелец, кодировка, права доступа).
  • \l+ – расширенная версия, которая дополнительно показывает размер базы данных, табличное пространство и описание.

Пример использования внутри psql:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres

2. Использование SQL-запросов через psql

Вы также можете выполнить SQL-запрос к системному каталогу pg_database:

SELECT datname FROM pg_database;

Более подробный запрос с дополнительной информацией:

SELECT datname, pg_encoding_to_char(encoding) AS encoding, datcollate, datctype 
FROM pg_database 
ORDER BY datname;

3. Команда из командной строки ОС (без входа в psql)

Если вам нужно быстро получить список баз данных прямо из оболочки операционной системы, используйте утилиту psql с флагом -l (или --list):

psql -l -U username -h localhost

Или для локального подключения с дефолтными настройками:

psql -l

4. Важные технические детали для DevOps-инженера

  • Подключение к конкретному экземпляру: При использовании psql -l вы можете указать хост, порт и пользователя для подключения к нужному кластеру PostgreSQL. Например:
    psql -l -h db.production.example.com -p 5433 -U monitoring_user
    
  • Автоматизация и скрипты: Для автоматизации (например, в bash-скриптах или CI/CD) лучше использовать SQL-запрос с ключом -t (или --tuples-only), который выводит только данные без заголовков и разметки:
    psql -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;" -U postgres
    
  • Шаблонные базы данных: В списке всегда присутствуют служебные базы template0 и template1, которые используются как шаблоны для создания новых баз. Их обычно исключают из операционных списков с помощью условия WHERE datistemplate = false.
  • Мониторинг и метрики: Для задач мониторинга часто требуется получать не только имена, но и размеры баз. Используйте запрос:
    SELECT datname, pg_size_pretty(pg_database_size(datname)) AS size 
    FROM pg_database 
    ORDER BY pg_database_size(datname) DESC;
    

Рекомендации по использованию в продакшене

  • В скриптах автоматизации всегда явно указывайте пользователя и хост, избегая reliance на переменные окружения по умолчанию.
  • Для безопасного подключения используйте файлы .pgpass для хранения паролей или SSL-сертификаты.
  • Если вы работаете с контейнеризованным PostgreSQL (например, в Kubernetes), команда psql -l может выполняться внутри пода через kubectl exec.
  • Помните, что для выполнения этих команд пользователь должен иметь соответствующие привилегии (как минимум CONNECT на базу данных).

Выбор конкретного способа зависит от контекста: для интерактивного использования удобны команды \l и \l+, а для автоматизации и скриптов – SQL-запросы, выполняемые через psql -c.

Какая команда выводит список баз в PostgreSQL? | PrepBro