Понякога може да бъде полезно да активирате отдалечени връзки към MySQL. Това ви позволява директно да се свържете с MySQL на един от вашите сървъри от приложение или MySQL клиент, работещ на различна система.
Има два различни начина за отдалечен достъп до MySQL:
- Използване на SSH тунел.
- Разрешаване на директен достъп до MySQL от отдалечени системи.
Свързване с MySQL чрез SSH тунел
Използването на SSH тунел е най-лесният и най-сигурен вариант за отдалечен достъп до MySQL за целите на разработката. SSH тунел ще направи така, че да изглежда, че MySQL работи във вашата локална система. SSH прави това, като отваря локален порт и безпроблемно прехвърля цялата комуникация през този порт до MySQL, работещ на вашия сървър.
За да създадете SSH тунел от Mac или Linux, можете да изпълните SSH командата на командния ред с -L
за да активирате пренасочване на локален порт.
ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS
В примера по-горе SSH ще отвори порт 2000 на вашата локална система и след това можете да комуникирате с MySQL, като се свържете с този локален порт. Например, можете да се свържете с помощта на командата MySQL:
mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -pНе оставяйте --protocol=tcp или MySQL може тихо да игнорира --host и --порт настроики.
Можете също да създавате SSH тунели в Windows с помощта на PuTTy, популярния Windows SSH клиент.
Разрешаване на директен достъп до MySQL от отдалечени системи
Внимание! Разрешаването на директен достъп до MySQL увеличава риска вашият сървър да бъде компрометиран от нападатели. Внимание! MySQL не използва защитени връзки по подразбиране. Ръководството за MySQL съдържа повече информация за SSL с MySQL.Стъпка 1:Конфигурирайте MySQL да слуша на всички интерфейси.
По подразбиране MySQL слуша само връзки на localhost , така че първата стъпка е да преконфигурирате MySQL на вашия сървър на база данни, за да слушате на всички интерфейси. За да направите това, влезте във вашия сървър като root .
Ако използвате сървър на Ubuntu 16.04 или 18.04, редактирайте този файл:
/etc/mysql/mysql.conf.d/mysqld.cnf
За сървъри 14.04 или 12.04 редактирайте този файл:
/etc/mysql/my.cnf
Намерете следния ред във всеки файл:
bind-address = 127.0.0.1
Променете bind-address до 0.0.0.0 :
bind-address = 0.0.0.0
Запазете този файл и след това изпълнете следната команда като root :
sudo service mysql restart
Стъпка 2:Отворете TCP порт 3306 в защитната стена на вашия сървър.
Защитната стена, конфигурирана от ServerPilot, блокира целия достъп до MySQL извън вашия сървър. Така че ще трябва да персонализирате защитната си стена, за да разрешите достъп до MySQL.
За да отворите достъп до MySQL извън вашия сървър, вижте нашата статия за персонализиране на вашата защитна стена.
Допълнителна стъпка за EC2:Разрешете TCP порт 3306 във вашите групи за сигурност.
Ако това е EC2 сървър, трябва също да разрешите порт 3306 в групите за сигурност на вашия сървър.
Конфигурирайте вашите приложения да използват отдалечения хост.
След като настроите отдалечения MySQL сървър, ще искате да конфигурирате приложенията си да използват този хост за транзакции на база данни. Това обикновено се настройва в конфигурационния файл на приложението и ние ще използваме WordPress като наш пример.
Отворете файла wp-config.php на приложението.
На този ред:
define('DB_HOST', 'localhost');
Променете „localhost“ на IP адреса или пълното име на вашия отдалечен MySQL сървър. IP адресът обикновено ще бъде по-бърз и по-надежден избор, тъй като не разчита на DNS резолюция.
Запазете файла и излезте и сте готови! Вече можете да тествате приложението си, за да се уверите, че работи правилно.