PHP SSH üzerinden bir MySQL sunucusuna bağlanmak

5 Cevap php

i de aynı yapmak istiyorum bu konu ile ilgili bir yazı, okuyun

i have my database on remote linux machine, and i want to connect using ssh and php funcitons,(i am currently using ssh2 library for that) i tried using mysql_connect, but it gives me cant access (although i have granted permission) when i tried using this function:

$connection = ssh2_connect('SERVER IP', 22);

ssh2_auth_password($connection, 'username', 'password');

$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);

$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 
                         'dbname', 3307, $tunnel)
    or die ('Fail: '.mysql_error());

i "() parametresi 6 dize verilen, kaynak olmasını beklediğini mysqli_connect", kimse bu konuda bana lütfen yardımcı olabilir hatası var

5 Cevap

Bazı yardım bu SO söz konusudur.

Connect to a MySQL server over SSH in PHP

Ayrıca, bu makale size yardımcı olabilir.

Tunnelling MySQL over SSH

the docs göre, bu son parametre bir soket veya boru ismi, '/ var / run / mysql / mysql.sock' gibi bir şey olması gerekiyordu. Bir UNIX soket kullanarak bağlanma değil konum beri, bu ... sizin için geçerli yüzden sadece dışarı bırakarak denemek değil.

Bu deneyin:

ssh-FNG-L 3307:127.0.0.1:3306 myuser@remotehost.com

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

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

http://chxo.com/be2/20040511_5667.html Chris Snyder harika bir yazı teşekkürler

i referred to abve question also, but it is not working for, please tell if there are some seetings or conditions which i have to check on my local machine.

Burada uzun süre takılıp .....

Hey, ben bile kök kimlik ve ve kamu-özel anahtar çiftinin hem ssh yaparak denedim, ama ben değilim ama php kodu ile komut satırı aracılığıyla conect sağlar. Ben (ssh2 işlevlerini kullanarak) da tünel oluşturarak denedim, php kod (sistem, exec vb) kabuk komutları çalıştırarak ans, hiçbir şey çalıştı. Sonunda i kabuk komutu çalıştırmak için ssh2 fonksiyonu çalıştı ve sonunda çalıştı :) İşte size yardımcı olur koddur: ----

$ Baglanti = ssh2_connect ($ uzakmakine, '22 '); (ssh2_auth_password ($ baglanti, $ user, $ parola)) {echo "! Doğrulama Başarılı \ n" ise; } Else {die ('Kimlik Doğrulama Başarısız ...'); }

$ Akım = ssh2_exec ($ baglanti, '"select * id = \ zingaya.users gelen" echo 1606 \ ";" | mysql'); ($ akışı, true) stream_set_blocking; while ($ satir = fgets ($ stream)) {flush (); echo $ satır "\ n".; }

Bu özellikle php fonksiyonlarını kullanmak istiyorsanız, bu denemek benim için çalıştı.