Перейти на сайт
База знаний/Руководства/Установка и настройка MySQL на VPS. База данных для вашего проекта

Установка и настройка MySQL на VPS. База данных для вашего проекта

Установка MySQL на Ubuntu / Debian

apt update
apt install mysql-server -y

Проверка статуса

systemctl status mysql

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

mysql_secure_installation

Скрипт предложит:

  • Установить пароль root. Обязательно задайте сложный пароль
  • Удалить анонимных пользователей. Да
  • Запретить удалённый вход root. Да
  • Удалить тестовую базу. Да
  • Перезагрузить привилегии. Да

Основные команды MySQL

Вход в консоль

mysql -u root -p

Работа с базами данных

-- Создать базу данных
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Показать все базы
SHOW DATABASES;

-- Выбрать базу
USE mydb;

-- Удалить базу
DROP DATABASE mydb;

Управление пользователями

-- Создать пользователя
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'SecurePassword123!';

-- Дать все права на базу
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

-- Применить изменения
FLUSH PRIVILEGES;

-- Показать пользователей
SELECT user, host FROM mysql.user;

Настройка удалённого доступа

По умолчанию MySQL слушает только localhost. Чтобы открыть удалённый доступ:

  1. Отредактируйте конфигурацию:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. Измените строку:
bind-address = 0.0.0.0
  1. Создайте пользователя для удалённого доступа:
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'SecurePassword123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'remoteuser'@'%';
FLUSH PRIVILEGES;
  1. Перезапустите MySQL:
systemctl restart mysql
  1. Откройте порт в файрволе:
ufw allow 3306/tcp

Открывать удалённый доступ к MySQL без необходимости не стоит, это риск для безопасности. По возможности используйте SSH-туннель.

Резервное копирование

Создание бэкапа

# Одна база
mysqldump -u root -p mydb > mydb_backup.sql

# Все базы
mysqldump -u root -p --all-databases > all_backup.sql

Восстановление из бэкапа

mysql -u root -p mydb < mydb_backup.sql

Автоматический бэкап через cron

crontab -e

Добавьте строку для ежедневного бэкапа в 3:00:

0 3 * * * mysqldump -u root -pYOUR_PASSWORD --all-databases | gzip > /backups/mysql_$(date +\%F).sql.gz

Полезные файлы

Путь Описание
/etc/mysql/mysql.conf.d/mysqld.cnf Главный конфиг
/var/log/mysql/error.log Лог ошибок
/var/lib/mysql/ Данные баз

Оптимизация производительности

Для VPS с 1-2 ГБ RAM добавьте в конфиг:

[mysqld]
innodb_buffer_pool_size = 256M
max_connections = 50
query_cache_size = 32M
tmp_table_size = 32M

Перезапустите MySQL после изменения конфигурации: systemctl restart mysql