我最近在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服务器。任何关于为什么的想法我的网站也无法连接?
提前感谢任何见解。
答案 0 :(得分:3)
由于我可以确定您的服务器正在运行(并且通常可以从互联网中看到),因此有几种可能性:
FLUSH PRIVILEGES
我的钱在#3上,有很多激励措施可以做到这一点。
答案 1 :(得分:0)
@Chris提到您的提供商可能正在阻止端口3306上的出站请求。以下是一种快速检查是否是这种情况并绕过它的方法:
将路由器配置为从路由器上的端口80前移到您机顶盒上的端口3306。这将允许您通过端口80而不是端口3306从网络外部连接到MySQL。
更改您的PHP代码,以便在端口80而不是3306上连接到您的IP。
您的托管服务提供商可能阻止出站端口3306,但几乎肯定不会阻止出站端口80请求(很多人使用CURL或Web服务等)。
答案 2 :(得分:0)
我会告诉你我学到的一个小技巧,你所要做的就是进入wamp>mysql>my.ini
并用3306
替换所有3305
然后保存然后应用于您的防火墙和端口转发3305
。然后,当您远程连接时,只需执行
mysql_connect("ip adress:3305", "username", "password");
我已经对此进行了测试,因为网络托管网站阻止来自端口3306的传入流量,所以它可以正常运行。