MYSQL服务器ip与localhost的工作方式不同

时间:2013-05-18 21:40:53

标签: mysql

让我们说服务器的IP是55.555.555.55。让我们说我们有一个'user'@'localhost'

的mysql用户

那么,为什么会返回权限错误

$mysql_server = "55.555.555.55";
$mysql_user = "";
$mysql_password = "";
$mysql_db = "";
$mysqli = new mysqli($mysql_server, $mysql_user, $mysql_password, $mysql_db);
if ($mysqli->connect_errno) {
printf("Connection failed: %s \n", $mysqli->connect_error);
exit();
}
$mysqli->set_charset("utf8");

但这不是

$mysql_server = "localhost";
$mysql_user = "";
$mysql_password = "";
$mysql_db = "";
$mysqli = new mysqli($mysql_server, $mysql_user, $mysql_password, $mysql_db);
if ($mysqli->connect_errno) {
printf("Connection failed: %s \n", $mysqli->connect_error);
exit();
}
$mysqli->set_charset("utf8");

不是55.555.555.55和localhost是一回事吗?这应该不是问题。

1 个答案:

答案 0 :(得分:2)

不,localhost被MySQL视为TCP / IP的旁路。它使用UNIX套接字。并且您的mysql.user权限表中需要两行来授权这两种访问方法,即使用户名和密码相同也是如此。

通配符'%'匹配任何IP地址或主机名,但它匹配localhost。这可能是违反直觉的,但这是MySQL工作的方式。

这在此解释:http://dev.mysql.com/doc/refman/5.6/en/connecting.html