2011-01-31 119 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