繁体   English   中英

网站连接到本地 MySQL 服务器

[英]Website Connection to Local MySQL Server

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

对于该网站,我创建了一个“登录”PHP 脚本,以便人们登录我的网页。 但是,我不想从 0fees.net 上的 cPanel 上提供给我的 MySQL 数据库中读取,而是希望 PHP 登录脚本直接从我家计算机上配置的 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).

还应该注意的是,我可以使用相同的外部 IP 地址在端口 3306 上成功地从其他 Internet 网络上的其他机器(使用 Navicat 测试)远程连接到我的本地 MySQL 服务器。关于为什么我的网站不能也连接?

提前感谢您的任何见解。

由于我可以判断您的服务器肯定正在运行(并且通常从互联网上可见),因此有几种可能性:

  1. 您忘记运行FLUSH PRIVILEGES
  2. 您的用户名或密码错误
  3. 您的免费主机提供商阻止了连接

我的钱在#3,这样做有很多激励措施。

好吧,我将让您了解我学到的一个小技巧,您所要做的就是将 go 放入wamp>mysql>my.ini并将所有3306替换为3305然后保存并将其应用于您的防火墙和端口转发3305 然后,当您远程连接时,只需执行

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

我已经对此进行了测试,它可以正常工作,因为 web 托管站点会阻止来自端口 3306 的传入流量。

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

  1. 将您的路由器配置为从路由器上的端口 80 端口转发到您盒子上的端口 3306。 这将允许您从网络外部的端口 80 而不是端口 3306 连接到 MySQL。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM