我遇到了一种奇怪的行为,我无法解释自己。也许有人可以帮忙。这两条单行:
$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
这意味着有一个有效的连接。
我宁愿在这里遇到连接错误。这有点安全隐患吗?
答案 0 :(得分:1)
正如您自己所说,mysqli 能够打开到您的 MySQL 服务器的有效连接。这意味着您有 an anonymous user set up on your MySQL server。这是数据库管理方面的潜在安全风险。
就 mysqli 而言,它按设计工作。构造函数中的所有参数都是可选的。您只需要提供第一个也可以是 NULL
或空字符串,在这种情况下 mysqli 将回退到本地主机。如果构造函数中没有提供其他值,则 mysqli 将从 INI 配置文件中读取值。如果 INI 文件没有设置任何值,那么 mysqli 将回退到默认设置,即本地主机上的空用户和空密码。