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