当使用IP作为主机时,Php无法连接到MySQL workbench,但在使用localhost时工作正常

当使用IP作为主机时,Php无法连接到MySQL workbench,但在使用localhost时工作正常,php,mysql,Php,Mysql,这是我在使用php代码时遇到的错误 “mysql\u connect($host,$user,$password)”,其中$host=“我的系统的IP\u”: 但是当使用localhost而不是IP时,它可以正常工作 为什么会出现这种行为?请在$hostname中提及端口号,如192.168.0.1:3306(默认情况下为mysql端口) 有关服务器端口号,请与服务器管理员联系。出现问题的两个可能原因是: 1) 您的防火墙正在阻止我的系统的IP地址:3306 2) 您尚未在MySql中配置正确的

这是我在使用php代码时遇到的错误

“mysql\u connect($host,$user,$password)”,其中$host=“我的系统的IP\u”

但是当使用localhost而不是IP时,它可以正常工作


为什么会出现这种行为?

请在$hostname中提及端口号,如192.168.0.1:3306(默认情况下为mysql端口)


有关服务器端口号,请与服务器管理员联系。出现问题的两个可能原因是:

1) 您的防火墙正在阻止我的系统的IP地址:3306

2) 您尚未在MySql中配置正确的访问权限

对于第1项,请检查您的系统

对于#2,在Workbench中,输入数据库管理员身份。 然后,单击“用户和权限”。在此页面中,您必须向您的用户(MySQL用户,而不是Windows用户!)授予从地址或网络登录的权限。此权限为“每主机”和“每架构”。在下图中,您可以看到用户“testmvc”可以从任意主机(%)和本地主机登录:

在下一幅图中,您可以看到“模式权限”选项卡: 您可以看到,来自任何主机(%)的用户“testmvc”可以使用指定的权限访问“testmvc”模式


访问权限和特权的组合授予用户访问MySQL服务器并在其上操作的权限。

如果您了解Userid在MySQL中的工作原理,这非常简单

每个userid都有一个与之关联的位置,允许该userid从该位置登录。这可以是
任意位置%
,但通常是一个ip地址或一组ip地址

因此,您使用的用户ID可能被设置为允许从
localhost
127.0.0.1
以及
::1
访问,所有这些都是对运行MySQL服务器的PC进行寻址的方法

这些应该足够了,所以使用
localhost
127.0.0.1
或更改MySQL中的用户ID定义,允许从
192.168.0.99
或任何您的ip地址进行访问,但是使用
此PC
的别名之一应该是您所需要的。
当您将代码移动到另一台机器和/或MySQL服务器时,使用别名的也会有所帮助。我建议您使用特定的IP,它可能不会。

可能重复的U'r设置不允许远程连接我猜您在mysql db user的previleges中添加了
%
到主机。您能告诉我更多信息吗。需要什么设置??在mysql workbench中的何处添加%?是的,我已经这样做了,仍然不起作用,但对于localhost:3306它起作用。取决于您授予权限的方式,localhost:3306不同于127.0.0.1:3306
Warning: mysql_connect(): Host 'xxx' is not allowed to connect to this MySQL server in C:\xampp\htdocs\mysqltest\insert.php on line 4