前两天配置phpmyadmin时一直连接出错, 在网上有人说将主机host改为127.0.0.1(默认的是localhost), 改了之后就成功了, 在手册中找到了这么一段,应该就是这个原因了:
<手册中 mysqli目录下的Connections一节>
The MySQL server supports the use of different transport layers for connections. Connections use TCP/IP, Unix domain sockets or Windows named pipes.
The hostname localhost has a special meaning. It is bound to the use of Unix domain sockets. It is not possible to open a TCP/IP connection using the hostname localhost you must use 127.0.0.1 instead.
Example #1 Special meaning of localhost
<?php
$mysqli = new mysqli ( "localhost" , "user" , "password" , "database" );
if ( $mysqli -> connect_errno ) {
echo "Failed to connect to MySQL: (" . $mysqli -> connect_errno . ") " . $mysqli -> connect_error ;
}
echo $mysqli -> host_info . "\n" ;
$mysqli = new mysqli ( "127.0.0.1" , "user" , "password" , "database" , 3306 );
if ( $mysqli -> connect_errno ) {
echo "Failed to connect to MySQL: (" . $mysqli -> connect_errno . ") " . $mysqli -> connect_error ;
}
echo $mysqli -> host_info . "\n" ;
?>
以上例程会输出:
Localhost via UNIX socket 127.0.0.1 via TCP/IP
大意就是说主机名localhost只能在使用socket连接到mysql服务时使用, 如果通过tcp/ip协议连接mysql服务则主机名只能使用127.0.0.1 而不能用localhost.