безкоштовно з міських телефонів України
| Київ | 044 392-73-56 | 
| Харків | 057 728-49-18 | 
| Дніпро | 056 790-86-00 | 
| Одеса | 048 734-56-54 | 
| Львів | 032 229-58-50 | 
| Миколаїв | 051 270-12-63 | 
| Полтава | 053 262-53-74 | 
| Запоріжжя | 061 228-69-91 | 
У міру зростання сайту або програми трафік буде збільшуватися і ресурсів сервера може стати недостатньо. Якщо веб-сервер і сервер баз даних обслуговуються одним сервером, збільшити продуктивність можливо, перемістивши сервер баз даних на окремий сервер.
Рекомендується створити не root користувача з доступом до sudo .
В інструкції використовується текстовий редактор nano, для якого потрібно виконати команду:
 yum install nanoВ інструкції використовуються два сервери:
Перший сервер буде використовуватися для перевірки віддаленого підключення до бази даних, а на другому сервері буде встановлено та налаштовано сервер баз даних.
Підключаємось до другого сервера.
Оновлюємо пакети:
 sudo yum -y update
Встановлюємо MySQL ( MariaDB ) та допоміжні пакети:
 sudo yum install mariadb-server mariadb
Запускаємо MariaDB:
 sudo systemctl start mariadbЗапускаємо сценарій безпеки, що дозволяє видалити деякі небезпечні значення за умовчанням, а також обмежити доступ до системи баз даних:
 sudo mysql_secure_installationПісля виконання запиту з'явиться повідомлення із запитом пароля root.
Оскільки MySQL був тільки що встановлений і пароля root немає, необхідно просто натиснути enter.
Після цього необхідно натиснути 'y', щоб задати пароль для користувача root.

Після призначення пароля та підтвердження пароля з'явиться повідомлення:

Для інших питань необхідно просто натиснути клавішу enter у кожному питанні, щоб прийняти значення за замовчуванням:

Включаємо MariaDB для запуску під час завантаження:
 sudo systemctl enable mariadb
Створюємо нові підписані файли сертифікатів.
Створюємо новий каталог для файлів сертифікатів:
 sudo mkdir -p /etc/certsЗмінюємо власника каталогу сертифікатів користувача denis:
 sudo chown -R denis:denis /etc/certs/Заходимо до папки /etc/certs
 cd /etc/certsСтворюємо новий файл сертифіката CA.pem, виконавши наведені нижче команди, вказавши при заповненні власну інформацію:
 sudo openssl genrsa 2048 > ca-key.pem 
 sudo openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem
Інформація сертифіката CA повинна відрізнятися від інформації про серверний сертифікат та клієнтський сертифікат.
Створюємо новий серверний сертифікат server-cert.pem і файл server-key.pem, виконавши наведені нижче команди, вказавши при заповненні власну інформацію:
 sudo openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem 
 sudo openssl rsa -in server-key.pem -out server-key.pem 
 sudo openssl x509 -req -in server-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Для того, щоб до сервера баз даних міг підключитися тільки клієнт з відповідними файлами сертифікатів, створюємо новий клієнтський сертифікат client-req.pem та файл client-key.pem, виконавши наведені нижче команди, вказавши при заповненні власну інформацію:
 sudo openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem 
 sudo openssl rsa -in client-key.pem -out client-key.pem 
 sudo openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Переконуємося, що у створених файлах сертифікатів немає помилок:
 sudo openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
Змінюємо власника каталогу сертифікатів на користувача mysql, а також змінюємо дозволи всіх файлів ключів, виконавши наступні команди:
 sudo chown -R mysql:mysql /etc/certs/ sudo chmod 600 client-key.pem server-key.pem ca-key.pemВідкриваємо конфігураційний файл MySQL:
 sudo nano /etc/my.cnfі в розділі mysqld додаємо рядок:
 bind-address=93.190.42.60де 93.190.42.60 IP-адреса сервера баз даних.
А так само рядки:
 ssl-ca=/etc/certs/ca.pem ssl-cert=/etc/certs/server-cert.pem ssl-key=/etc/certs/server-key.pemТакож у нижній частині файлу додаємо рядки:
 [client] ssl-ca=/etc/certs/ca.pem ssl-cert=/etc/certs/client-cert.pem ssl-key=/etc/certs/client-key.pem
Зберігаємо зміну у файлі, натиснувши клавіші Ctrl+x , потім клавішу y і потім клавішу Enter.
Перезавантажуємо MySQL сервер для оновлення конфігурації.
 sudo systemctl restart mariadbПідключаємося до оболонки MySQL, вказавши пароль користувача root:
 sudo mysql -u root -p
Перевіряємо підключення та SSL виконавши команди:
 SHOW VARIABLES LIKE '%ssl%'; STATUS;
Виходимо з оболонки MySQL:
 exit;Для відкриття 3306 порту відкриваємо файл /etc/sysconfig/iptables:
 sudo nano /etc/sysconfig/iptablesта після рядка:
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPTвказуємо рядок:
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
Зберігаємо зміну у файлі, натиснувши клавіші Ctrl+x , потім клавішу y і потім клавішу Enter
Перезавантажуємо iptables для набуття чинності:
 sudo service iptables reloadСтворюємо базу даних для подальшого підключення до неї віддаленого сервера.
Підключаємося до MySQL як root:
 sudo mysql -u root -p
Для прикладу створюємо базу даних з ім'ям sitedb:
 CREATE DATABASE sitedb;
І користувача бази даних з ім'ям userdb та паролем passworddb, який зможе віддалено підключатися до бази даних з першого сервера, що має IP адресу 93.190.42.52:
 CREATE USER 'userdb'@'93.190.42.52' IDENTIFIED BY 'passworddb';
Передаємо користувачеві всі права на базу даних sitedb:
 GRANT ALL PRIVILEGES ON sitedb.* TO 'userdb'@'93.190.42.52';
Оновлюємо налаштування:
 FLUSH PRIVILEGES;
Закриваємо командний рядок MySQL:
 exit;
Переходимо на перший сервер і встановлюємо клієнтські інструменти MySQL, щоб отримати доступ до віддаленої бази даних:
 sudo yum install mariadb
Створюємо папку, в яку будуть скопійовані файли сертифікатів із сервера баз даних:
 mkdir mysql-hakaseПереходимо в папку mysql-hakase:
 cd mysql-hakaseКопіюємо файли сертифікатів, виконавши наступні команди та вказавши при виконанні кожної команди пароль користувача root, створеного на сервері 93.190.42.60:
 sudo scp root@93.190.42.60:/etc/certs/ca.pem /home/denis/mysql-hakase sudo scp root@93.190.42.60:/etc/certs/client-cert.pem /home/denis/mysql-hakase sudo scp root@93.190.42.60:/etc/certs/client-key.pem /home/denis/mysql-hakaseІ перевіряємо наявність завантажених файлів:
 ls
Підключаємося до сервера баз даних з IP адресою 93.190.42.60, використовуючи завантажені файли сертифікатів та ім'я користувача userdb, створеного раніше на сервері баз даних (після запиту пароля необхідно вказати пароль користувача userdb):
 sudo mysql -h 93.190.42.60 -u userdb --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -p
Після підключення виконуємо команду, щоб переконатися, що підключення захищене:
 status;
Відключаємось від сервера баз даних:
 exit; 
Див. також:
Налаштування віддаленої бази даних
