Voor een bepaald project is het alleen mogelijk via SSH te verbinden naar MySQL. Via EMS MySQL Manager Lite lukt dit prima. Ik verbind naar de MySQL server met de normale instellingen van onze externe MySQL server en kies als SSH-instellingen de gegevens die ik van onze provider gekregen heb.
Het moet echter wel zo zijn dat ik ook via PHP kan verbinden naar deze MySQL server, maar dat is me dus nog niet gelukt, voornamelijk omdat ik er niet helemaal uitkom met de PHP ssh2_tunnel functie.
Volgens vele google sites moet ik als het ware een soort van mapping maken:
[port1]:[mysqlserver]:[port2] (maar wij draaien dus geen SSH server, we nemen die van onze provider).
en dan verbinden naar de mysql server op localhost:port1.
In PHP lukt me dit echter niet. Wat er op de achtergrond van EMS MySQL Manager Lite gebeurd is me dus ook een raadsel.
Ik heb nu het volgende geprobeerd:
Ik heb bij de ssh2_tunnel functie elke mogelijke combinatie geprobeerd, maar niks lukte behalve het bovenstaande. Het is me namelijk onduidelijk hoe die functie werkt.
In ieder geval heb ik nu dus als het goed is een tunnel, maar hoe ik dan daarnaar moet connecten is me een raadsel via mysql_connect of mysqli_connect. Wat moet ik invullen als server? Wat als port? Heb al vanalles geprobeerd (localhost:22, localhost:3306, mysql_server_bij_provider.com:22 en 3306, shell.onzeprovider:22 3306 etc). Van gekheid wist ik dus niet meer wat ik moest doen.
EDIT:
Als ik nu als mysql-server invul: shell.onzeprovider.com:22 dan krijg ik wel verbinding maar dan:
Lost connection to MySQL server at 'reading initial communication packet'
Het moet echter wel zo zijn dat ik ook via PHP kan verbinden naar deze MySQL server, maar dat is me dus nog niet gelukt, voornamelijk omdat ik er niet helemaal uitkom met de PHP ssh2_tunnel functie.
Volgens vele google sites moet ik als het ware een soort van mapping maken:
[port1]:[mysqlserver]:[port2] (maar wij draaien dus geen SSH server, we nemen die van onze provider).
en dan verbinden naar de mysql server op localhost:port1.
In PHP lukt me dit echter niet. Wat er op de achtergrond van EMS MySQL Manager Lite gebeurd is me dus ook een raadsel.
Ik heb nu het volgende geprobeerd:
PHP:
1
2
3
4
5
| $connection = ssh2_connect('shell.onzeprovider.com', 22); ssh2_auth_password($connection, 'username', 'pass'); //tot hier gaat het prima! Verbinding werkt. //tunnel opzetten $tunnel = ssh2_tunnel($connection,'mysql-server-bij-provider.com',3306); //dit gaat ook goed |
Ik heb bij de ssh2_tunnel functie elke mogelijke combinatie geprobeerd, maar niks lukte behalve het bovenstaande. Het is me namelijk onduidelijk hoe die functie werkt.
In ieder geval heb ik nu dus als het goed is een tunnel, maar hoe ik dan daarnaar moet connecten is me een raadsel via mysql_connect of mysqli_connect. Wat moet ik invullen als server? Wat als port? Heb al vanalles geprobeerd (localhost:22, localhost:3306, mysql_server_bij_provider.com:22 en 3306, shell.onzeprovider:22 3306 etc). Van gekheid wist ik dus niet meer wat ik moest doen.
EDIT:
Als ik nu als mysql-server invul: shell.onzeprovider.com:22 dan krijg ik wel verbinding maar dan:
Lost connection to MySQL server at 'reading initial communication packet'
[ Voor 10% gewijzigd door armageddon_2k1 op 17-03-2009 15:08 ]
Engineering is like Tetris. Succes disappears and errors accumulate.