让我们说服务器的IP是55.555.555.55。让我们说我们有一个'user'@'localhost'
那么,为什么会返回权限错误
$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是一回事吗?这应该不是问题。
答案 0 :(得分:2)
不,localhost
被MySQL视为TCP / IP的旁路。它使用UNIX套接字。并且您的mysql.user
权限表中需要两行来授权这两种访问方法,即使用户名和密码相同也是如此。
通配符'%'
匹配任何IP地址或主机名,但它不匹配localhost。这可能是违反直觉的,但这是MySQL工作的方式。
这在此解释:http://dev.mysql.com/doc/refman/5.6/en/connecting.html