Установка PostgreSQL на Windows и Ubuntu: psql, pgAdmin 4 и первая база
Коротко
Установка PostgreSQL на Windows делается официальным инсталлятором с postgresql.org: он ставит сервер, службу, консоль psql и pgAdmin 4. В Ubuntu достаточно команды sudo apt install postgresql, после чего вход в базу выполняется через sudo -u postgres psql. Дальше остаётся создать своего пользователя и базу и подключить к ним приложение. Ниже все шаги по порядку, команды psql и решения ошибок, из-за которых служба не запускается.
Содержание
- Какую версию PostgreSQL ставить
- Установка PostgreSQL на Windows 10 и 11
- Установка PostgreSQL на Ubuntu и Debian
- Первый вход: sudo -u postgres psql
- Создание пользователя и базы данных
- Установка и настройка pgAdmin 4
- Установка PostgreSQL в Docker
- Подключение к PostgreSQL из PHP и Laravel
- Ошибки при установке и запуске PostgreSQL
Какую версию PostgreSQL ставить
Для установки PostgreSQL в ноябре 2026 года основной выбор - PostgreSQL 18: это текущая стабильная ветка, которая получает исправления раз в квартал. PostgreSQL 19 к середине ноября находится на стадии релиз-кандидата, выход финальной версии запланирован на конец месяца; для рабочих проектов имеет смысл подождать первого минорного обновления. Каждая основная версия поддерживается пять лет, поддержка PostgreSQL 14 закончилась 12 ноября 2026 года - на ней новые проекты начинать не стоит.

Внутри одной ветки (18.1, 18.2 и далее) обновление ставится поверх без переноса данных. Переход между основными версиями, например с 16 на 18, требует pg_upgrade или выгрузки и загрузки дампа. Сроки поддержки всех версий опубликованы на странице postgresql.org/support/versioning.
Установка PostgreSQL на Windows 10 и 11
PostgreSQL для Windows скачивается со страницы postgresql.org/download/windows: ссылка "Download the installer" ведёт на сборку EDB. Нужна 64-битная Windows 10 или 11 и учётная запись с правами администратора.
- Скачайте установщик
postgresql-18.x-windows-x64.exeи запустите его от имени администратора. - Оставьте папку установки по умолчанию:
C:\Program Files\PostgreSQL\18. - В окне "Select Components" оставьте отмеченными PostgreSQL Server, pgAdmin 4 и Command Line Tools; Stack Builder можно снять.
- Папку данных ("Data Directory") не меняйте или укажите путь только из латинских букв без пробелов.
- Задайте пароль суперпользователя
postgresи запишите его - без него в базу не войти. - Порт оставьте
5432, если на компьютере нет другого PostgreSQL. - В "Advanced Options" выберите локаль
Russian, Russiaили оставьте "[Default locale]". - Нажмите "Next" до начала установки и дождитесь окончания; в последнем окне снимите флажок запуска Stack Builder и нажмите "Finish".

Как открыть PostgreSQL после установки
Отдельного окна у сервера нет: он работает в фоне как служба Windows. Для работы с базами в меню "Пуск" появляются два ярлыка в папке "PostgreSQL 18":
- "SQL Shell (psql)" - консоль; на вопросы Server, Database, Port и Username нажимайте Enter, затем введите пароль postgres;
- "pgAdmin 4" - графическая панель в отдельном окне.
Чтобы запускать psql из любой командной строки, добавьте C:\Program Files\PostgreSQL\18\bin в переменную PATH: "Параметры" → "Система" → "О системе" → "Дополнительные параметры системы" → "Переменные среды" → Path → "Изменить" → "Создать". После этого откройте новое окно терминала.

Если psql в Windows пишет "Кодовая страница консоли (866) отличается от основной страницы Windows (1251)", а русские буквы выводятся крякозябрами, выполните перед запуском chcp 1251 или работайте в Windows Terminal с PowerShell.
Как запустить и остановить службу PostgreSQL в Windows
Служба называется postgresql-x64-18 и по умолчанию стартует вместе с Windows. Управлять ей можно в оснастке "Службы" (Win + R → services.msc) или из PowerShell, запущенного от администратора:
# Состояние службы
Get-Service postgresql-x64-18
# Запуск, остановка и перезапуск
Start-Service postgresql-x64-18
Stop-Service postgresql-x64-18
Restart-Service postgresql-x64-18
Установка PostgreSQL на Ubuntu и Debian
В Ubuntu 24.04, 26.04 и Debian 12/13 PostgreSQL есть в штатном репозитории. Команда ниже ставит ту версию, которую выбрали разработчики дистрибутива (в Ubuntu 24.04 это PostgreSQL 16):
sudo apt update
sudo apt install postgresql postgresql-contrib
# Проверить версию и работу службы
psql --version
sudo systemctl status postgresql
Свежая версия из репозитория PostgreSQL
Если нужна последняя ветка, подключите официальный репозиторий проекта (PGDG). В пакете postgresql-common есть скрипт, который делает это одной командой:
- Установите пакет:
sudo apt install -y postgresql-common. - Подключите репозиторий:
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.shи подтвердите нажатием Enter. - Поставьте нужную версию:
sudo apt install -y postgresql-18. - Проверьте список кластеров:
pg_lsclusters- у кластера 18/main должен быть статус online.

Конфигурация в Debian и Ubuntu лежит в /etc/postgresql/18/main/: postgresql.conf - параметры сервера, pg_hba.conf - правила, кто и как может подключаться. Данные хранятся в /var/lib/postgresql/18/main.
Первый вход: sudo -u postgres psql
При установке создаётся суперпользователь базы postgres и одноимённый пользователь Linux. Для локальных подключений в Ubuntu действует метод peer: в базу пускают того, чьё системное имя совпадает с ролью. Поэтому первый вход выполняется так:
# Войти в psql от имени системного пользователя postgres
sudo -u postgres psql
# Задать пароль роли postgres (понадобится pgAdmin и приложениям)
\password postgres
В Windows аналог - psql -U postgres: ключ -U задаёт роль, а пароль вы указали при установке. Флаг -h localhost принудительно включает подключение по сети вместо сокета, это полезно, когда peer-аутентификация мешает войти под другой ролью.
Основные команды psql
| Команда | Что делает |
|---|---|
\l | Список баз данных |
\c shop | Подключиться к базе shop |
\dt | Список таблиц текущей базы |
\d users | Структура таблицы users |
\du | Список ролей (пользователей) |
\conninfo | К какой базе и под кем вы подключены |
\x | Вертикальный вывод широких строк |
\q | Выйти из psql |
Команды с обратной косой чертой - это команды самого psql, точка с запятой им не нужна. Обычные SQL-запросы, наоборот, заканчиваются ;, иначе psql ждёт продолжения и меняет приглашение с =# на -#.
Создание пользователя и базы данных
Работать приложению под суперпользователем postgres не стоит. Создайте отдельную роль-владельца и базу для проекта:
-- Роль с правом входа и паролем
CREATE ROLE shop_user WITH LOGIN PASSWORD 'Hq7#vR2m!pZ4';
-- База, владельцем которой будет эта роль
CREATE DATABASE shop OWNER shop_user ENCODING 'UTF8';
-- Проверка
\l shop
\du shop_user
Владелец базы может создавать в ней таблицы в схеме public. С PostgreSQL 15 обычные роли больше не получают это право автоматически, поэтому при ошибке "permission denied for schema public" проверьте, что база принадлежит нужной роли, или выдайте право явно: GRANT CREATE ON SCHEMA public TO shop_user;. Те же действия в консоли Linux делаются утилитами createuser и createdb:
sudo -u postgres createuser --pwprompt shop_user
sudo -u postgres createdb --owner=shop_user shop
# Проверить вход новой ролью по паролю
psql -h localhost -U shop_user -d shop
Если вы раньше работали с MySQL, сравните с тем, как там устроены пользователи и права: в PostgreSQL вместо пары "имя@хост" есть роли, а откуда разрешено подключаться, задаёт файл pg_hba.conf.
Подключение к PostgreSQL с другого компьютера
- В
postgresql.confзамените#listen_addresses = 'localhost'наlisten_addresses = '*'. - В конец
pg_hba.confдобавьте строку для своего IP:host shop shop_user 203.0.113.25/32 scram-sha-256. - Перезапустите сервер:
sudo systemctl restart postgresql. - Откройте порт 5432 в файрволе только для этого адреса.
Установка и настройка pgAdmin 4
В Windows pgAdmin 4 ставится вместе с сервером, если не снять его в списке компонентов. В Ubuntu его нет в штатном репозитории: используйте официальный репозиторий проекта pgAdmin (пакеты pgadmin4-desktop для окна на компьютере и pgadmin4-web для доступа через браузер) или Docker-образ dpage/pgadmin4.
- Запустите pgAdmin 4 и при первом запуске задайте мастер-пароль - им шифруются сохранённые пароли серверов.
- В дереве слева щёлкните правой кнопкой по "Servers" и выберите "Register" → "Server...".
- На вкладке "General" введите любое имя, например
Local 18. - На вкладке "Connection" укажите Host name
localhost, Port5432, Usernamepostgresи пароль, отметьте "Save password". - Нажмите "Save" - сервер появится в дереве со списком баз.

Создать базу данных в pgAdmin 4: правой кнопкой по "Databases" → "Create" → "Database...", имя и владелец на вкладке "General", затем "Save". Посмотреть таблицы: раскройте "База" → "Schemas" → "public" → "Tables". Писать запросы удобнее в "Query Tool" (меню "Tools" → "Query Tool" или Alt + Shift + Q), выполнение - клавишей F5.
Установка PostgreSQL в Docker
Для разработки сервер удобно поднять в контейнере - ничего не ставится в систему, а версию легко сменить:
docker run -d --name pg18 \
-e POSTGRES_USER=shop_user \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_DB=shop \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql \
postgres:18
# Войти в psql внутри контейнера
docker exec -it pg18 psql -U shop_user -d shop
Обратите внимание на путь тома: начиная с образа postgres:18 данные хранятся в подпапке с номером версии внутри /var/lib/postgresql, поэтому том монтируют на эту папку, а не на /var/lib/postgresql/data, как в старых версиях. Как собрать PHP, веб-сервер и базу в одном compose.yaml, разобрано в статье про Docker для PHP.
Подключение к PostgreSQL из PHP и Laravel
PHP работает с PostgreSQL через расширение pdo_pgsql. В Windows (XAMPP, своя сборка PHP) раскомментируйте в php.ini строки extension=pdo_pgsql и extension=pgsql и перезапустите веб-сервер; где лежит нужный файл, подскажет статья о расположении php.ini. В Ubuntu установите пакет: sudo apt install php8.4-pgsql (номер - ваша версия PHP).
<?php
declare(strict_types=1);
// Подключение к PostgreSQL через PDO
$dsn = 'pgsql:host=127.0.0.1;port=5432;dbname=shop';
$pdo = new PDO($dsn, 'shop_user', 'Hq7#vR2m!pZ4', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$stmt = $pdo->prepare('SELECT id, name FROM products WHERE price > :price');
$stmt->execute(['price' => 1000]);
print_r($stmt->fetchAll());
Код запросов почти не отличается от работы с MySQL через PDO, меняется только DSN. В Laravel 12 и 13 достаточно поправить .env:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=shop
DB_USERNAME=shop_user
DB_PASSWORD=Hq7#vR2m!pZ4
После этого php artisan migrate создаст таблицы уже в PostgreSQL.
Ошибки при установке и запуске PostgreSQL
| Ошибка | Причина | Как исправить |
|---|---|---|
| Problem running post-install step / database cluster initialisation failed | Кириллица или пробелы в пути данных, нет прав у службы на папку | Переустановите с папкой данных вида C:\pgdata |
| Не удалось запустить службу postgresql-x64-18 | Занят порт 5432, повреждена папка data, мешает антивирус | Посмотрите лог в data\log, освободите порт или смените его |
| "psql" не является внутренней или внешней командой | Папка bin не добавлена в PATH | Добавьте ...\PostgreSQL\18\bin в Path или используйте "SQL Shell (psql)" |
| password authentication failed for user "postgres" | Неверный пароль роли | Войдите через sudo -u postgres psql и выполните \password |
| Peer authentication failed for user | Системное имя не совпадает с ролью | Подключайтесь с -h localhost или поправьте метод в pg_hba.conf |
| could not find driver (PHP) | Не включено расширение pdo_pgsql | Включите расширение и перезапустите веб-сервер |
Узнать, что именно мешает службе стартовать в Windows, проще всего по журналу: откройте последний файл в папке C:\Program Files\PostgreSQL\18\data\log или "Просмотр событий" → "Журналы Windows" → "Приложение". Занят ли порт, покажет команда netstat -ano | findstr 5432. В Linux смотрите sudo journalctl -u postgresql@18-main.
Если вы забыли пароль postgres в Windows, временно замените в pg_hba.conf метод scram-sha-256 на trust для строк localhost, перезапустите службу, задайте новый пароль через \password postgres и сразу верните scram-sha-256 обратно.
Когда сервер работает, можно переходить к запросам: синтаксис SELECT и соединений таблиц в PostgreSQL почти такой же, как в MySQL, а FULL JOIN здесь поддерживается напрямую - примеры в статье о JOIN в SQL.
Частые вопросы
Как открыть PostgreSQL после установки?
Сервер работает как служба в фоне. Для работы откройте "SQL Shell (psql)" или "pgAdmin 4" из меню "Пуск", в Linux выполните sudo -u postgres psql.
Какой пароль у пользователя postgres по умолчанию?
Пароля по умолчанию нет. В Windows его задают при установке, в Ubuntu роль входит через peer без пароля, а пароль ставится командой \password postgres.
Почему не удалось запустить службу PostgreSQL при установке?
Обычно мешают кириллица в пути к папке данных, занятый порт 5432 или антивирус. Посмотрите лог в папке data\log и переустановите с путём вида C:\pgdata.
Как узнать версию PostgreSQL?
В консоли выполните psql --version, а версию работающего сервера покажет запрос SELECT version();.
Нужно ли ставить pgAdmin отдельно?
В Windows он входит в установщик PostgreSQL. В Ubuntu pgAdmin 4 ставится из репозитория проекта pgAdmin или запускается в Docker.
Как подключиться к PostgreSQL из PHP?
Включите расширение pdo_pgsql и используйте DSN pgsql:host=127.0.0.1;port=5432;dbname=имя в PDO. В Laravel укажите DB_CONNECTION=pgsql в .env.



