使用IP地址连接远程服务器的Mysql

15
我正在使用PHP和MySQL建立数据库连接,唯一的变化是我正在尝试使用我的服务器IP地址从我的本地计算机访问远程服务器。
mysql_connect("x.xx.xx.x","username","password") or die(mysql_error());

我遇到的错误是无法连接给定的主机。该用户拥有所有特权和权限。


2
你的服务器能从你的电脑访问吗?特别是MYSQL服务器端口? - Fender
尝试从终端手动连接,这将指示问题所在。 - lynks
4个回答

23

大多数MySQL默认安装只监听本地计算机。

在服务器的my.cnf中查找bind-address设置,并确保它正在监听目标IP地址。您还需要确保skip-networking没有被打开!

或者(不太安全!)可以使用以下方式设置它以便在所有地址(本地和远程)上监听:

bind-address = 0.0.0.0

非常感谢各位的帮助,让我尝试了所有的方法,相信这将解决我的问题。 - Frank

4

请尝试添加一个允许从IP连接的用户(USER-NAME):

mysql> GRANT ALL PRIVILEGES ON *.* TO USER-NAME@IP IDENTIFIED BY "PASSWORD";

USER-NAME是您想要创建的用户名(例如“widor”)

IP是远程连接的公共IP地址(例如“195.x.y.z”)

当然,限制您想要授予的特权(ALL PRIVILEGES可能不是您的选择)


六年后,这仍然非常有用,我已经正确设置了一切,只是没有给用户访问我所需的所有内容。 - Stark

4

在尝试使用 PHP 后,请打开您的终端或控制台并输入以下内容:

$ mysql -u username -h x.xx.xx.x -p

然后输入您的密码。

如果您使用的是 Windows,则输入以下内容:

\path\to\mysql.exe -u username -h x.xx.xx.x -p

然后输入您的密码。

这将为您提供更详细的响应,以查明身份验证问题。您可以百分之百地确信您从 IP 地址进行的远程登录可行。如果它能够正常工作,那么问题就出在您的 PHP 代码中,您需要检查是否有遗漏。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接