15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
31.10.2024
2 +1

Как да управлявате бази данни в PostgreSQL: Пълно ръководство за потребители на Linux VPS

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

Пускането на PostgreSQL в високопроизводителна VPS хостинг среда — с NVMe SSD хранилище, пълен root достъп и вградена DDoS защита — ви дава пълен контрол над вашата инфраструктура на база данни без режийните разходи на управлявани облачни решения. Това ръководство ви преведе през всяка съществена задача за управление на PostgreSQL, от първоначалния достъп и създаване на база данни до разрешения на потребители, резервни копия и укрепване на сигурността.

Предварителни условия

Преди да продължите, уверете се, че имате:

  • Linux VPS, работещ на Ubuntu, Debian или CentOS с инсталиран PostgreSQL
  • Root или sudo достъп до вашия сървър
  • Основно познаване на командния ред на Linux

Ако все още не сте конфигурирали вашата серверна среда, VPS контролни панели на 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 от вашата обикновена сесия на shell.

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 часа и добавя датата към имената на файла за лесно версионизиране.

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

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

КомандаОписание
lИзведете всички бази данни
###PPT_
15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало