我遇到了一种奇怪的行为,我自己无法解释。也许有人可以帮忙。这两条单线:
$mysqli = new mysqli("");
print_r($mysqli);
给我这个:
mysqli Object (
[affected_rows] => 0
[client_info] => 5.5.44
[client_version] => 50544
[connect_errno] => 0
[connect_error] =>
[errno] => 0
[error] =>
[error_list] => Array
(
)
[field_count] => 0
[host_info] => Localhost via UNIX socket
[info] =>
[insert_id] => 0
[server_info] => 5.5.47-0+deb7u1
[server_version] => 50547
[stat] => Uptime: 950 Threads: 2 Questions: 1340 Slow queries: 0 Opens: 397 Flush tables: 1 Open tables: 390 Queries per second avg: 1.410
[sqlstate] => 00000
[protocol_version] => 10
[thread_id] => 393
[warning_count] => 0
)
如您所见:[connect_errno] => 0
这意味着存在有效的连接。我希望这里有一个连接错误。这不是有点安全风险吗?
正如您自己所说,mysqli能够打开与MySQL服务器的有效连接。这意味着您在MySQL服务器上设置了一个匿名用户。这是来自数据库管理方面的潜在安全风险。
就mysqli而言,它按设计运行。构造函数中的所有参数都是可选的。您只需要提供第一个,也可以是NULL
或空字符串,在这种情况下,mysqli将回退到本地主机。如果构造函数中没有提供其他值,那么mysqli将从INI配置文件中读取值。如果INI文件没有设置任何值,那么mysqli将回退到默认设置,即localhost上的空用户和空密码。