Publicidad

Conectar con MySql desde PHP a través del un tunel SSH


Por Alex el 25/10/2021, Comentar el artículo

Comparte este artículo:      




Es muy normal que nuestro servidor MySql se encuentre protegido y no podamos acceder desde fuera de nuestra red y necesitemos conectarnos por SSh a un servidor en la misma red del MySql para poder acceder .... pero ...


Desde nuestro entorno de desarrollo, quizás en local, en nuestra máquina, podemos acceder remotamente al servidor estableciendo un tunel SSH.

En el ejemplo que voy a poner vamos a suponer que tenemos:

  • Un servidor al que nos conectamos por SSH con la IP 192.168.100.10
  • Un servidro MySql en la IP 192.168.50.50

Para conectarnos desde PHP a través de un tunnel con el servidor MySql tenemos primero que crear el túnel de la siguiente forma:

Shell_exec("ssh -f -L 127.0.0.1:33038:192.168.50.50:3306 root@192.168.100.10 -i /home/netveloper/.ssh/id_rsa");

$db = mysqli_connect("127.0.0.1", "root", "PASSWORD_BBDD", "base_de_datos", 33038);

De esta forma primero creamos el túnel y después conectamos a través del túnel creado y ahora podemos ejecutar una query:

$rows = $db->query( "Select * from posts limit 10")->fetch_all();

print_r ( $rows);

También podemos conectar a través de este túnel con PDO, igual que antes lo primero que haremos es abrir el tunel al servidor que nos dará acceso al MySql

Shell_exec("ssh -f -L 127.0.0.1:33038:192.168.50.50:3306 root@192.168.100.10 -i /home/netveloper/.ssh/id_rsa");

$config = [ 'dsn' => 'mysql:host=127.0.0.1;port=33038;dbname=base_de_datos', 'username' => 'root', 'password' => 'PASSWORD_BBDD', ];
$conn = new PDO( $config['dsn'], $config['username'], $config['password']); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare( "Select * from posts limit 10"); $stmt->execute(); $data = $stmt->fetchAll( PDO::FETCH_ASSOC); $count = $stmt->rowCount(); $stmt->closeCursor();
print_r ( $data);
$conn = null;



Y esto es todo amigos!!!
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.