网站连接到本地MySQL服务器

时间:2011-06-14 20:26:54

标签: php mysql windows

我最近在Windows家用电脑上配置了MySQL服务器。此外,我还使用0fees.net创建了一个网站 - 一个免费的托管服务提供商,它带有一个vista面板,提供各种服务,包括PHP支持,FTP文件托管,自己的MySQL服务器等。

对于该网站,我创建了一个“登录”PHP脚本,以便人们登录我的网页。但是,我希望PHP登录脚本直接从我在家用计算机上配置的MySQL服务器上读取,而不是从在0fees.net上的cPanel上给我的MySQL数据库中读取。为此,我采取了以下几个步骤:

1)使用MySQL服务器实例配置向导配置MySQL

在该配置中,我在端口3306上启用了TCP / IP网络(并为该端口启用了防火墙例外)并启用了从远程计算机的root访问权限。

2)在MySQL命令行客户端上,我使用以下方法为其他单元授予了远程访问功能:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

3)我已将端口3306转发到我的路由器(并使用各种端口检查器确认它已打开)

4)我创建了名为“login.php”的登录脚本,该脚本位于我网站的.htdocs目录中,并在我网站的主页上处理HTML登录表单。它尝试(并且失败)连接到我的本地MySQL服务器。该PHP脚本的兴趣部分是:

    $host="my_external_ip:3306"; // External IP of my computer and port to listen on
    $username="root"; // Username specified in the GRANT command-line-client command
    $password="password"; // Password specified in the GRANT command-line-client command
    $db_name="logon"; // MySQL database name
    $tbl_name="accounts"; // Table name within the database

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die(mysql_error());
    mysql_select_db("$db_name")or die("cannot select DB");

尝试连接MySQL服务器时,收到一条错误消息,指出:

Can't connect to MySQL server on 'my_external_ip' (4).

还应该注意到,我已经成功地能够使用端口3306上的相同外部IP地址从其他互联网上的其他计算机(使用Navicat测试)远程连接到我的本地MySQL服务器。任何关于为什么的想法我的网站也无法连接?

提前感谢任何见解。

3 个答案:

答案 0 :(得分:3)

由于我可以确定您的服务器正在运行(并且通常可以从互联网中看到),因此有几种可能性:

  1. 您忘记了FLUSH PRIVILEGES
  2. 您的用户名或密码错误
  3. 您的免费主机提供商正在阻止连接
  4. 我的钱在#3上,有很多激励措施可以做到这一点。

答案 1 :(得分:0)

@Chris提到您的提供商可能正在阻止端口3306上的出站请求。以下是一种快速检查是否是这种情况并绕过它的方法:

  1. 将路由器配置为从路由器上的端口80前移到您机顶盒上的端口3306。这将允许您通过端口80而不是端口3306从网络外部连接到MySQL。

  2. 更改您的PHP代码,以便在端口80而不是3306上连接到您的IP。

  3. 您的托管服务提供商可能阻止出站端口3306,但几乎肯定不会阻止出站端口80请求(很多人使用CURL或Web服务等)。

答案 2 :(得分:0)

我会告诉你我学到的一个小技巧,你所要做的就是进入wamp>mysql>my.ini并用3306替换所有3305然后保存然后应用于您的防火墙和端口转发3305。然后,当您远程连接时,只需执行

mysql_connect("ip adress:3305", "username", "password");

我已经对此进行了测试,因为网络托管网站阻止来自端口3306的传入流量,所以它可以正常运行。