mysql_connect()在localhost上工作正常,但在访问单独的ip时则不行

时间:2009-09-27 06:20:05

标签: php mysql ssl

我正在与我的大学系统管理员合作,为我设置LAMP堆栈。我需要从我正在处理的几个网站访问这个服务器,我遇到了一些问题。

所以要保持清楚:

LAMP服务器网址= http s :// mysqlserver.edu

学校网址= http s ://schoolsite.edu

当我在LAMP服务器上运行mysql_connect()时它连接正常:

mysql_connect('localhost','user','password'); 效果很好!

但是,当我在学校网址上运行mysql_connect()时,我无法连接:

mysql_connect('mysqlserver.edu','user','password');

警告:mysql_connect():第3行的/home/content/x/x/x/xxx/html/testconnect.php中的未知MySQL服务器主机'mysqlserver.edu'(1) 未知的MySQL服务器主机'mysqlserver.edu'(1)

我需要系统管理员做什么才能让外部站点上的PHP脚本访问MySQL服务器?

SSL是否会使问题复杂化?

我感谢您提供的任何见解。

4 个答案:

答案 0 :(得分:1)

未知的MySQL服务器主机可能意味着您的计算机无法解析为主机名mysqlserver.edu,您是否尝试通过IP地址进行连接?

在确定要解析名称后,您必须克服另外三个障碍:

  • 防火墙正如其他人所示,
  • MySQL服务器配置,必须允许远程连接和
  • 必须设置能够远程连接的用户。

答案 1 :(得分:0)

MySQL用户依赖于它所访问的计算机。 'root @ localhost'与'root@192.168.0.156'不同。因此,您必须从要访问的计算机中添加用户。因此,假设提供php脚本的计算机是'192.168.156',您需要将用户'user@192.168.0.156'添加到MySQL服务器,并且不要忘记为该用户设置访问数据库的权限需要的。

希望这有帮助

答案 2 :(得分:0)

通过公共WAN建立MySQL连接很少见。一两个局域网跳一般是常见的,但出于安全原因,通常无法通过防火墙。也就是说,到端口3306的传入TCP连接被防火墙或网关阻塞到mysqlserver.edu所在的本地LAN上。

对此的规范测试是:

$ telnet mysqlserver.edu 3306

我可以预测这不起作用。 (“工作”表示它报告“已连接到...”并输出一些乱码。)您有多种选择:

  • 在本地或至少在附近运行数据库。我的意思是,除非有MySQL,否则它不是LAMP堆栈。 :-)这就是每个人都做的事。
  • 使用某种隧道/ VPN解决方案来通过防火墙和端口3306
  • 在防火墙上打开3306。你可能不会在这方面得到合作。

答案 3 :(得分:0)

my.cnf中是否启用了“skip-name-resolve”选项?