Установка MySQL и MariaDB: Руководство по базовому управлению
Пошаговая установка MySQL и MariaDB на Linux: mysql_secure_installation, базы и пользователи, основы SQL, удалённый доступ и настройка производительности.
Установка PostgreSQL на Ubuntu/Debian и RHEL/CentOS: пользователи и базы данных, основы SQL, удалённое подключение и резервное копирование.
PostgreSQL — одна из самых мощных реляционных систем управления базами данных с открытым исходным кодом в мире. Благодаря соответствию ACID, расширенным типам данных, поддержке JSON и широким возможностям расширения она охватывает широкий спектр применений — от корпоративных приложений до небольших проектов. В этом руководстве рассматриваются установка, базовое управление и настройка PostgreSQL.
На системах Ubuntu и Debian PostgreSQL можно установить из официальных репозиториев:
# Обновить список пакетов
apt update
# Установить PostgreSQL
apt install -y postgresql postgresql-contrib
# Проверить статус службы
systemctl status postgresql
# Включить автозапуск
systemctl enable postgresql
Для получения более новой версии можно добавить официальный репозиторий PostgreSQL:
# Установить необходимые инструменты
apt install -y curl ca-certificates
# Добавить ключ подписи PostgreSQL
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
# Добавить репозиторий
echo 'deb https://apt.postgresql.org/pub/repos/apt '$(lsb_release -cs)'-pgdg main' > /etc/apt/sources.list.d/pgdg.list
# Обновить и установить
apt update
apt install -y postgresql-16
# Добавить официальный репозиторий PostgreSQL
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Отключить встроенный модуль PostgreSQL
dnf -qy module disable postgresql
# Установить PostgreSQL 16
dnf install -y postgresql16-server postgresql16-contrib
# Инициализировать базу данных
/usr/pgsql-16/bin/postgresql-16-setup initdb
# Запустить и включить службу
systemctl enable --now postgresql-16
# Проверить статус службы
systemctl status postgresql-16
psql --version
# Вывод: psql (PostgreSQL) 16.x
# Информация о службе
psql -U postgres -c 'SELECT version();'
При установке создаётся системный пользователь postgres. Для подключения к базе данных:
# Переключиться на системного пользователя postgres
su - postgres
# Подключиться к консоли PostgreSQL
psql
# Подключиться напрямую от root
sudo -u postgres psql
# Подключиться к конкретной базе данных
sudo -u postgres psql -d mydb
-- В консоли PostgreSQL
-- Создать нового пользователя
CREATE USER appuser WITH PASSWORD 'НадёжныйПароль123!';
-- Создать суперпользователя (использовать с осторожностью)
CREATE USER adminuser WITH PASSWORD 'АдминПароль!' SUPERUSER;
-- Список пользователей
\du
-- Изменить пароль пользователя
ALTER USER appuser WITH PASSWORD 'НовыйПароль456!';
-- Предоставить право создания баз данных
ALTER USER appuser CREATEDB;
-- Создать базу данных
CREATE DATABASE myapp OWNER appuser ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8' TEMPLATE template0;
-- Список баз данных
\l
-- Подключиться к базе данных
\c myapp
-- Предоставить полные права пользователю
GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser;
-- Права на схему (PostgreSQL 15+)
GRANT ALL ON SCHEMA public TO appuser;
-- Удалить базу данных
DROP DATABASE staraya_baza;
-- Создать таблицу
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Вставить данные
INSERT INTO users (username, email) VALUES ('ivan', 'ivan@example.com');
-- Запросить данные
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
-- Обновить данные
UPDATE users SET email = 'novyi@example.com' WHERE id = 1;
-- Удалить данные
DELETE FROM users WHERE id = 5;
-- Список таблиц
\dt
-- Просмотр структуры таблицы
\d users
-- Создать индекс
CREATE INDEX idx_users_email ON users(email);
По умолчанию PostgreSQL принимает подключения только с localhost. Для удалённого доступа необходимо отредактировать два файла.
# Найти расположение файла конфигурации
sudo -u postgres psql -c 'SHOW config_file;'
# Редактировать
nano /etc/postgresql/16/main/postgresql.conf
# Изменить строку listen_addresses
listen_addresses = '*'
# Порт (по умолчанию 5432)
port = 5432
nano /etc/postgresql/16/main/pg_hba.conf
# Добавить строку для удалённых подключений (в конец файла)
# TYPE DATABASE USER ADDRESS METHOD
host myapp appuser 192.168.1.0/24 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
# Перезапустить службу
systemctl restart postgresql
# Открыть порт с помощью UFW
ufw allow 5432/tcp
# С помощью iptables
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
Открытие порта PostgreSQL (5432) в интернет является угрозой безопасности. По возможности используйте SSH-туннель или VPN. Если удалённый доступ необходим, ограничьте его конкретными IP-адресами.
# Резервная копия одной базы данных
pg_dump -U postgres myapp > myapp_backup.sql
# Сжатый формат (более быстрое восстановление)
pg_dump -U postgres -Fc myapp > myapp_backup.dump
# Резервная копия всех баз данных
pg_dumpall -U postgres > all_databases.sql
# Резервная копия с удалённого сервера
pg_dump -h 192.168.1.100 -U postgres myapp > myapp_remote.sql
# Восстановление из формата SQL
psql -U postgres myapp < myapp_backup.sql
# Восстановление из сжатого формата
pg_restore -U postgres -d myapp myapp_backup.dump
# Восстановление всех баз данных
psql -U postgres < all_databases.sql
# Редактировать crontab
crontab -e
# Создавать резервную копию каждую ночь в 02:00
0 2 * * * pg_dump -U postgres myapp | gzip > /backup/myapp_$(date +\%Y\%m\%d).sql.gz
# Удалять резервные копии старше 30 дней
0 3 * * * find /backup -name 'myapp_*.sql.gz' -mtime +30 -delete
# Запустить службу
systemctl start postgresql
# Остановить службу
systemctl stop postgresql
# Перезапустить службу
systemctl restart postgresql
# Перезагрузить конфигурацию (без перезапуска)
systemctl reload postgresql
# Просмотр журналов
journalctl -u postgresql -f
tail -f /var/log/postgresql/postgresql-16-main.log
PostgreSQL — надёжная и высокопроизводительная система управления базами данных. После установки не пренебрегайте настройкой безопасности, выполняйте регулярное резервное копирование и правильно настраивайте методы аутентификации для удалённого доступа. PostgreSQL без проблем работает на серверах REXE и обеспечивает надёжную производительность при высоких нагрузках.
PostgreSQL предлагает полное соответствие ACID, расширенные типы данных (JSON, JSONB, массивы, hstore), оконные функции и широкие возможности расширения. MySQL в целом проще в установке и управлении, тогда как PostgreSQL лучше справляется со сложными запросами и большими наборами данных. Для новых проектов рекомендуется PostgreSQL.
Подключитесь к консоли PostgreSQL командой sudo -u postgres psql, затем выполните ALTER USER postgres WITH PASSWORD 'НовыйПароль'; Для изменения пароля системного пользователя используйте sudo passwd postgres.
Проверьте три вещи: 1) убедитесь, что в postgresql.conf установлено listen_addresses = '*', 2) проверьте, что в pg_hba.conf добавлена строка host для соответствующего IP, 3) убедитесь, что порт 5432 открыт в брандмауэре (ufw status или iptables -L). Не забудьте перезапустить службу после внесения изменений.
pg_dump создаёт согласованный снимок и очень надёжен. Для больших баз данных используйте -Fc (пользовательский формат); этот формат поддерживает параллельное восстановление и создаёт файлы меньшего размера. Для критически важных систем также рассмотрите более продвинутые методы резервного копирования, такие как архивирование WAL или потоковая репликация.
PostgreSQL по умолчанию использует порт 5432. Чтобы изменить его, обновите строку port = 5432 в файле /etc/postgresql/16/main/postgresql.conf нужным номером порта и перезапустите службу. Не забудьте также обновить pg_hba.conf и строки подключения.
Да, каждая версия может работать на разных портах. Например, PostgreSQL 14 может работать на стандартном порту 5432, а PostgreSQL 16 — на порту 5433. Каждая версия имеет собственный каталог данных и модуль службы. Используйте команду pg_lsclusters для просмотра всех существующих кластеров.
Пошаговая установка MySQL и MariaDB на Linux: mysql_secure_installation, базы и пользователи, основы SQL, удалённый доступ и настройка производительности.
Redis и Memcached на Ubuntu/Debian: основные команды, персистентность, TTL, сравнение Redis и Memcached и интеграция с приложениями.
Пошаговая установка phpMyAdmin на Apache и Nginx, настройка SSL, управление пользователями, ограничение по IP и усиление безопасности.