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.
También puede interesarte:
Configurar Laravel Sail para utilizar un MySql externo existente |
||