Раздел помощи SpaceWeb

Настройка MySQL на отдельном сервере с локальной сетью VPS

31 май, 2023

Внутри локальной сети на VPS - можно вынести базу данных MySQL на отдельный сервер. При таком варианте работы, сервер обрабатывает запросы MySQL через частное подключение.

Распределение ресурсов между виртуальными машинами может понадобиться, если база данных использует значительное количество ресурсов сервера. При использовании отдельного сервера для базы данных, появляется возможность выделить практически все ресурсы для работы базы данных без ущерба работы остальных сервисов.

Рассмотрим ниже конкретный пример, будем устанавливать подключение для CMS WordPress в Ubuntu 20.04

Подготовительный этап:

В первую очередь необходимо:

  1. Перейти в панель управления SpaceWeb и заказать две виртуальные машины. Для удобства назовем их как VPS_MYSQL (на нем будет располагаться база данных) и VPS_WP (на нем будет располагаться сайт)
  2. На VPS_WP устанавливаем образ Ubuntu 20.04 и связку LEMP(NGINX, MySQL и PHP). Для VPS_MYSQL - Ubuntu 20.04
  3. Подключить VPS_MYSQL и VPS_WP к локальной сети по инструкции

Установка и настройка MySQL сервера:

  1. Подключитесь с помощью ssh к VPS_MYSQL
  2. Выполните установку MySQL сервера:
sudo apt-get update
sudo apt-get install mysql-server
  1. Установите root пароль к MySQL. Для этого нужно подключиться к MySQL серверу и выполнить команду:
mysql -u root
  1. Выполнить команду для смены пароля, где PASSWORD ваш выбранный пароль:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
  1. Далее нужно применить изменения:
mysql> FLUSH PRIVILEGES;
  1. Откройте конфигурационный файл MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

В конфигурационном файле найдите секцию [mysqld] и поменяйте значения переменных bind-address и mysqlx-bind-address. Вместо 127.0.0.1 укажите IP-адрес VPS_MYSQL внутренней сети.

  1. Сохраните изменения в файле и выполните перезапуск MySQL-сервера:
sudo systemctl restart mysql
  1. Подключитесь к MySQL:
mysql -u root -p

В случае успешного подключения вы увидите приглашение в терминале для ввода команды.

  1. Создайте базу данных:
CREATE DATABASE local_test;
  1. Создайте пользователей для локального подключения к базе данных:
CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'password';

где localuser логин и password пароль

  1. Задайте права на изменения в базе данных:
GRANT ALL PRIVILEGES ON local_test.* TO 'localuser'@'localhost';
  1. Создайте пользователя для удалённого подключения. В качестве хоста нужно указать локальный IP, присвоенный VPS_WP.

Для этого пользователя мы должны указать IP, с которого будет производиться подключение к БД, то есть не IP хоста, на котором расположена сама БД:

CREATE USER 'dediuser'@'10.0.0.22' IDENTIFIED BY 'password';
  • где dediuser логин для удаленного подключения password пароль и 10.0.0.22 IP-адрес с которого будет производиться подключение к БД
  1. Этому пользователю также нужно задать права:
GRANT ALL PRIVILEGES ON local_test.* TO 'dediuser'@'10.0.0.22';
  1. Чтобы применить изменения выпоните команду:
FLUSH PRIVILEGES;

Теперь можно выйти, выпонив в консоли exit

Протестируем подключение к локальной базе данных:

mysql -u localuser -p

Если подключение было выполнено без ошибок можно выйти: exit

  1. Протестируем подключение удаленной базе данных. Перейдите на VPS_WP и подключитесь к базе данных на VPS_MYSQL:
mysql -u dediuser -h 10.16.0.3 -p

после ключа -h укажите адрес машины VPS_MYSQL 10.0.0.20

Если подключение завершается ошибкой:

ERROR 1130 (HY000): Host '10.0.0.20' is not allowed to connect to this MySQL server

Вероятнее всего на VPS_MYSQL не был перезапущен сервер MySQL

Установка CMS WordPress:

  1. Подключитесь к VPS_WP скачайте пакет установки WordPress с официального сайта:
wget https://wordpress.org/latest.tar.gz
  1. Распакуйте загруженый архив:
tar xzvf latest.tar.gz
  1. Сделайте копию файла конфигурации CMS и переименуйте, чтобы WordPress смог корректно работать:
cp wordpress/wp-config-sample.php wordpress/wp-config.php
  1. Откройте файл wp-config.php и укажите данные для подключения к БД:
nano wordpress/wp-config.php

Нужно изменить значение переменных:

  • DB_NAME - имя БД;
  • DB_USER - имя пользователя базы данных для удалённого подключения к ней;
  • DB_PASSWORD - пароль от базы;
  • DB_HOST - локальный IP VPS_MYSQL;

Выполните сохранение файла и закройте его

  1. Скопируйте папку CMS WordPress в корневую папку nginx:
sudo cp -a wordpress/* /var/www/html
  1. Для корректной обработки данных nginx, измените владельца на www-data:
sudo chown -R www-data:www-data /var/www/html
  1. Откройте файл /etc/nginx/sites-enabled/default и добавьте для обработки index.php в строку под комментарием:
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
  1. Перезагрузите nginx:
systemctl restart nginx
  1. Перейдите в браузер в адресной строке, обратитесь к установочному файлу http://внешний-ip-адрес-VPS_WP/wp-admin/install.php. Должна открыться страница установки WordPress.
  2. Выберите язык, далее "Продолжить", заполните необходимые данные в форме. Скопируйте пароль от панели админитрирования сайтом.

Проект полностью развернут.