Какая команда выводит список баз в PostgreSQL?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Команды для вывода списка баз данных в 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.