Перейти к содержимому

Статья 41 из 75

Гайды

MySQL и MariaDB

MySQL на VPS нужен сайтам и панелям. Установка и первый доступ.

Окно терминала
apt update
apt install mysql-server -y
Окно терминала
systemctl status mysql

scr

Окно терминала
mysql_secure_installation

scr

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

  • Установить пароль root. Обязательно задайте сложный пароль
  • Удалить анонимных пользователей. Да
  • Запретить удалённый вход root. Да
  • Удалить тестовую базу. Да
  • Перезагрузить привилегии. Да
Окно терминала
mysql -u root -p
-- Создать базу данных
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Показать все базы
SHOW DATABASES;
-- Выбрать базу
USE mydb;
-- Удалить базу
DROP DATABASE mydb;

scr

-- Создать пользователя
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'SecurePassword123!';
-- Дать все права на базу
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
-- Применить изменения
FLUSH PRIVILEGES;
-- Показать пользователей
SELECT user, host FROM mysql.user;

scr

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

  1. Отредактируйте конфигурацию:
Окно терминала
nano /etc/mysql/mysql.conf.d/mysqld.cnf

scr

  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

scr

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

Окно терминала
# Одна база
mysqldump -u root -p mydb > mydb_backup.sql
# Все базы
mysqldump -u root -p --all-databases > all_backup.sql

scr

Окно терминала
mysql -u root -p mydb < mydb_backup.sql
Окно терминала
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

scr

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