15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
31.10.2024
1 +1

Как управлять базами данных в PostgreSQL: полное руководство для пользователей Linux VPS

PostgreSQL (обычно называется Postgres) — одна из самых мощных, многофункциональных и открытых систем управления реляционными базами данных, доступных сегодня. Доверяемая стартапами и корпоративными командами, она отлично справляется со сложными запросами, большими наборами данных и масштабируемыми архитектурами приложений. Независимо от того, создаёте ли вы платформу SaaS, интернет-магазин или API-бэкенд с интенсивной обработкой данных, PostgreSQL обеспечивает надёжность и производительность, которые требует ваш проект.

Запуск PostgreSQL в высокопроизводительной среде VPS Hosting — с хранилищем NVMe SSD, полным доступом root и встроенной защитой от DDoS — даёт вам полный контроль над инфраструктурой базы данных без затрат на управляемые облачные решения. Это руководство проведёт вас через все основные задачи управления PostgreSQL, от первоначального доступа и создания базы данных до разрешений пользователей, резервных копий и усиления безопасности.

Предварительные требования

Перед началом убедитесь, что у вас есть:

  • Linux VPS на базе Ubuntu, Debian или CentOS с установленным PostgreSQL
  • Доступ root или sudo к вашему серверу
  • Базовое знакомство с командной строкой Linux

Если вы ещё не настроили среду сервера, VPS Control Panels AlexHost упростят быструю настройку вашего стека.

1. Доступ к интерфейсу командной строки PostgreSQL

Все задачи управления PostgreSQL начинаются с интерфейса командной строки (CLI), также известного как psql. По умолчанию PostgreSQL создаёт системного пользователя postgres во время установки, и эта учётная запись используется для аутентификации в ядре базы данных.

Шаг 1: Переключитесь на системного пользователя PostgreSQL

sudo -i -u postgres

Шаг 2: Запустите CLI PostgreSQL

psql

После подключения вы увидите интерактивное приглашение:

postgres=#

Это подтверждает, что вы находитесь в среде PostgreSQL и готовы выполнять SQL-команды и мета-команды.

> Совет профессионала: Вы также можете подключиться напрямую без переключения пользователей, запустив sudo -u postgres psql из обычного сеанса оболочки.

2. Создание новой базы данных

Базы данных — это контейнеры верхнего уровня для всех ваших таблиц, индексов и хранимых данных. Используйте оператор CREATE DATABASE для подготовки новой базы данных.

Синтаксис

CREATE DATABASE database_name;

Пример

CREATE DATABASE my_database;

Это создаёт базу данных с именем my_database, принадлежащую текущей активной роли PostgreSQL.

Проверьте, что база данных была создана

Используйте мета-команду l для отображения всех баз данных на сервере:

l

Вы увидите таблицу с именами баз данных, владельцами, кодировками и привилегиями доступа.

3. Создание и управление пользователями базы данных

Надлежащее управление пользователями критически важно для безопасности базы данных. Вместо предоставления всем приложениям доступа под учётной записью суперпользователя postgres, вы должны создавать выделенных пользователей с ограниченными разрешениями.

Создайте нового пользователя

CREATE USER username WITH PASSWORD 'your_secure_password';

Пример

CREATE USER dbuser WITH PASSWORD 'StrongP@ssword123';

Предоставьте полный доступ к конкретной базе данных

GRANT ALL PRIVILEGES ON DATABASE database_name TO username;

Пример

GRANT ALL PRIVILEGES ON DATABASE my_database TO dbuser;

Это предоставляет dbuser полный доступ на чтение и запись к my_database, включая возможность создавать и удалять таблицы.

Список всех пользователей

Для просмотра всех существующих ролей и пользователей:

du

4. Подключение к базе данных

После создания базы данных вам необходимо подключиться к ней, прежде чем вы сможете создавать таблицы или выполнять запросы к ней.

Переключитесь на базу данных

c my_database

Приглашение обновится, отражая активную базу данных:

my_database=#

Теперь вы работаете в пределах my_database и можете выполнять все DDL и DML операторы против неё.

5. Создание и управление таблицами

Таблицы — это основная структурная единица любой реляционной базы данных. Каждая таблица определяет схему — набор именованных столбцов с определёнными типами данных и ограничениями.

Создайте таблицу

CREATE TABLE table_name (
    column1 data_type PRIMARY KEY,
    column2 data_type,
    column3 data_type
);

Практический пример: таблица записей сотрудников

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    name        VARCHAR(100) NOT NULL,
    department  VARCHAR(50),
    salary      NUMERIC(10, 2)
);

Здесь SERIAL автоматически увеличивает employee_id для каждой новой строки, а NOT NULL обеспечивает, что каждый сотрудник должен иметь имя.

6. Вставка, запрос, обновление и удаление данных

Вставьте запись

INSERT INTO employees (name, department, salary)
VALUES ('Jane Smith', 'Engineering', 72000);

Запросите все записи

SELECT * FROM employees;

Отфильтруйте результаты с помощью предложения WHERE

SELECT name, salary FROM employees WHERE department = 'Engineering';

Обновите существующую запись

UPDATE employees
SET salary = 78000
WHERE name = 'Jane Smith';

Удалите конкретную запись

DELETE FROM employees
WHERE name = 'Jane Smith';

> Лучшая практика: Всегда используйте предложение WHERE с операторами UPDATE и DELETE. Его пропуск повлияет на каждую строку в таблице.

7. Управление доступом к базе данных и безопасностью

Безопасность — это приоритетная задача в любом развёртывании PostgreSQL в производстве. Принцип наименьших привилегий — предоставление пользователям только необходимых им разрешений — значительно снижает вашу поверхность атаки.

Отозвите все привилегии у пользователя

REVOKE ALL PRIVILEGES ON DATABASE my_database FROM dbuser;

Предоставьте доступ только для чтения к конкретной таблице

GRANT SELECT ON TABLE employees TO dbuser;

Это позволяет dbuser запрашивать таблицу employees, но предотвращает любые вставки, обновления или удаления.

Предоставьте конкретные разрешения DML

GRANT SELECT, INSERT, UPDATE ON TABLE employees TO dbuser;

Дополнительные рекомендации по безопасности

  • Используйте надёжные уникальные пароли для каждого пользователя базы данных
  • Отключите удалённый доступ для суперпользователя postgres в pg_hba.conf
  • Включите SSL-соединения для шифрования данных при передаче — сочетайте это с доверенным SSL-сертификатом на вашем сервере
  • Регулярно проверяйте привилегии пользователей с помощью du и dp
  • Держите PostgreSQL в актуальном состоянии для исправления известных уязвимостей

8. Резервное копирование и восстановление баз данных

Регулярные резервные копии являются обязательными для любой производственной базы данных. PostgreSQL предоставляет утилиты pg_dump и psql для простых рабочих процессов резервного копирования и восстановления.

Создайте резервную копию базы данных в файл SQL

pg_dump my_database > my_database_backup.sql

Это экспортирует всю схему базы данных и данные как простой текстовый SQL-скрипт.

Создайте резервную копию в сжатом формате (рекомендуется для больших баз данных)

pg_dump -Fc my_database > my_database_backup.dump

Пользовательский формат (-Fc) создаёт сжатый двоичный файл и поддерживает параллельное восстановление.

Восстановите базу данных из резервной копии SQL

psql my_database < my_database_backup.sql

Восстановите из резервной копии в пользовательском формате

pg_restore -d my_database my_database_backup.dump

Автоматизируйте резервные копии с помощью задания Cron

Запланируйте ежедневные резервные копии, добавив запись cron:

crontab -e
0 2 * * * pg_dump my_database > /var/backups/postgres/my_database_$(date +%F).sql

Это запускает резервную копию каждый день в 2:00 AM и добавляет дату к имени файла для удобного управления версиями.

9. Удаление таблиц и баз данных

Когда таблица или база данных больше не нужны, используйте команду DROP для их постоянного удаления.

Удалите таблицу

DROP TABLE table_name;

Пример

DROP TABLE employees;

Удалите таблицу только если она существует (более безопасный синтаксис)

DROP TABLE IF EXISTS employees;

Удалите базу данных

Вы должны отключиться от целевой базы данных перед её удалением. Сначала переключитесь на базу данных по умолчанию postgres:

c postgres

Затем удалите целевую базу:

DROP DATABASE my_database;

> Предупреждение: DROP DATABASE необратимо. Всегда проверяйте, что у вас есть текущая резервная копия, перед выполнением этой команды в производстве.

10. Справочник полезных мета-команд PostgreSQL

CLI psql включает богатый набор мета-команд (с префиксом ), которые упрощают навигацию и проверку:

КомандаОписание
lСписок всех баз данных
c dbname
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать