Mysql
 sql >> база данни >  >> RDS >> Mysql

Свържете се към MySQL сървър през SSH в PHP

SSH тунелно решение

Настройте SSH тунел към вашия сървър на база данни MySQL (чрез Jumpbox прокси за сигурност).


(A) GUI инструменти

В зависимост от вашите изисквания, можете да използвате GUI MySQL клиент с вградена поддръжка за SSH тунелиране, като например Visual Studio Code Препращане на порт / създаване на SSH тунел , TablePlus или използвайте PuTTY за да настроите локално пренасочване на порт.

В macOS харесвам Secure Pipes или TablePlus .


(B) Команден ред

Стъпка 1.

ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 

Ключът тук е '-L' превключвател, който казва на ssh, че изискваме локален пренасочване на порт.

Избрах да използвам порт 3307 по-горе. Целият трафик на моя локален машина, насочена към този порт, вече ще бъде „пренасочена към порта“ чрез моя ssh клиент към ssh сървъра работи на хоста на адрес ssh-jumpbox.com .

Jumpbox ssh прокси сървърът ще декриптира трафика и ще установи мрежова връзка към вашия MySQL сървър на база данни от ваше име, 10.3.1.55:3306 , в такъв случай. Сървърът на базата данни MySQL вижда връзката, идваща от вътрешния мрежов адрес на вашия Jumpbox.


Синтаксис за пренасочване на локален порт
Синтаксисът е малко сложен, но може да се види като:

<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end> [email protected]_proxy_host.com

Ако се интересувате от другите превключватели, те са:

-f (отидете на заден план)
-N (не изпълнявайте отдалечена команда)
-g (позволете на отдалечените хостове да се свързват с локални пренасочени портове)

Удостоверяване с частен ключ, добавете (-i) превключвател към по-горе:

-i /пътя/до/частен ключ

Стъпка 2.

Кажете на вашия локален MySQL клиент да се свърже през вашия SSH тунел през локалния порт 3307 на вашата машина (-h 127.0.0.1), който сега препраща целия трафик, изпратен до него през SSH тунела, който сте установили в стъпка 1.

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase

Обменът на данни между клиент и сървър вече се изпраща през криптираната SSH връзка и е защитен.


Бележка за сигурност
Не тунелирайте директно към сървъра на базата данни. Наличието на сървър на база данни, достъпен директно от интернет, е огромно задължение за сигурността. Направете целевия адрес на тунела интернет адреса на вашия Jumpbox/Bastion Host (вижте примера в стъпка 1), а вашата база данни е насочена към вътрешния IP адрес на вашия сървър на база данни в отдалечената мрежа. SSH ще направи останалото.


Стъпка 3.

Сега свържете вашето PHP приложение с:

<?php
      $smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" );
      mysql_select_db( "db", $smysql ); 
?>

Кредит на Крис Снайдър страхотна статия подробно тунелиране на ssh команден ред за MySQL свързаност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталиране на MySQL Python на Mac OS X

  2. SELECT / GROUP BY - сегменти от време (10 секунди, 30 секунди и т.н.)

  3. MySQL търсене и замяна на текст в поле

  4. Как работи операторът RLIKE в MySQL

  5. Как да избегнем деленето на нула в MySQL