2011-01-31 165 views
2

當外部訪問未啓用且我無法啓用它時,有沒有辦法使用C#訪問MySQL數據庫?某種PHP接口或類似的東西可能? 在此先感謝。Mysql外部訪問

回答

1

你可以寫在HTTP之上,(或SOAP之上,在HTTP上)自己的協議,但你需要確保你不這樣做破壞了安全....

<?php 

$shared_secret = 'shhhh_s3cr3t!'; 
$qry=$_GET['qry']; 
$remote_ip=_SERVER["REMOTE_ADDR"]; 
if (sha1($shared_secret . $qry , $remote_ip)!=$_GET['auth']) { 
     header("HTTP/1.1 401 Unauthorized"); 
     print "not authorized!"; 
     exit; 
} else { 
    $dbh=mysql_connect($db_host, $db_user, $db_pass); 
    if ($dbh===false) error_reply(); 
    $r=mysql_query($_GET['qry'], $dbh); 
    if ($r===false) error_reply(); 
    $result=array(); 
    while ($result[]=mysql_fetch_assoc($r)); 
    print serialize($result); 
    exit; 
} 

function error_reply() 
{ 
    header("HTTP/1.1 503 Internal Server Error"); 
    print mysql_error(); 
} 
+0

thx爲您的答覆,但我決定寫我自己的php接口。 – 2011-02-04 19:12:27

0

對MySQL數據庫的訪問取決於數據庫是否配置爲偵聽來自遠程IP地址的端口,以及網絡是否允許該端口上的流量。數據庫和防火牆/網絡都需要配置。除非這兩者都配置爲允許外部訪問,否則無法使用任何東西遠程訪問數據庫。

如果這些設置和配置正確,那麼您應該可以使用客戶端庫以某種方式遠程訪問數據庫。我不知道C#是否對連接遠程數據庫有其自己的限制,如果是的話,那麼你需要找到另一種可以被C#包裝的連接方式。

+0

我認爲* OP正在尋找類似於phpMyAdmin的東西,但是作爲一組Web服務,它們可以從C#應用程序中使用,這意味着不需要「外部世界」能夠*直接*連接到MySql服務器 – Rob 2011-01-31 11:03:00