Статья 41 из 75
Гайды
MySQL и MariaDB
MySQL на VPS нужен сайтам и панелям. Установка и первый доступ.
Установка MySQL на Ubuntu / Debian
Заголовок раздела «Установка MySQL на Ubuntu / Debian»apt updateapt install mysql-server -yПроверка статуса
Заголовок раздела «Проверка статуса»systemctl status mysql
Первоначальная настройка безопасности
Заголовок раздела «Первоначальная настройка безопасности»mysql_secure_installation
Скрипт предложит:
- Установить пароль root. Обязательно задайте сложный пароль
- Удалить анонимных пользователей. Да
- Запретить удалённый вход root. Да
- Удалить тестовую базу. Да
- Перезагрузить привилегии. Да
Основные команды MySQL
Заголовок раздела «Основные команды 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
Заголовок раздела «Автоматический бэкап через 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 = 256Mmax_connections = 50query_cache_size = 32Mtmp_table_size = 32M
Перезапустите MySQL после изменения конфигурации:
systemctl restart mysql