使用mysqli连接数据库报错Could not connect 配置参数排查求助
排查步骤
1. 修正连接参数写法
你当前代码中把端口拼接在host字段的写法在部分PHP环境下会出现解析错误,建议使用mysqli构造函数的单独port参数,修改为:
// 分开填写host、port参数,避免解析异常 $mysqli = new mysqli("localhost", "root", "", "grcrenta_2020", 3306);
servername取值直接以phpMyAdmin首页「数据库服务器」区块显示的地址为准,无需自行解析或填写站点URL。如果站点和数据库部署在同一服务器,优先尝试localhost(走socket连接)或127.0.0.1(走TCP连接),二者在MySQL权限体系中是完全独立的,不要混用。
2. 确认数据库账号权限
- 不要使用root账号连接业务数据库,共享主机环境下root账号默认禁止web侧业务访问,直接使用你自行创建的专属账号
- 确认账号的授权主机范围和你使用的servername匹配:如果账号授权的是
'用户名'@'localhost',用127.0.0.1连接会直接被拒绝,反之同理 - 重新执行授权语句确保权限生效,示例如下:
GRANT ALL PRIVILEGES ON grcrenta_2020.* TO '你的用户名'@'localhost' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;
3. 打印具体错误定位根因
你当前的代码只输出固定的连接失败提示,看不到具体错误原因,修改报错代码输出原生错误信息,可直接定位问题:
if($mysqli->connect_error) { exit('连接错误详情: ' . $mysqli->connect_error); }
系统返回的错误会明确告知你是账号密码错误、主机无访问权限、还是指定数据库不存在,无需盲试参数。
4. 多语言兼容配置
连接成功后请立刻设置字符集为utf8mb4,避免希腊语等多语言内容出现乱码:
$mysqli->set_charset('utf8mb4');
内容的提问来源于stack exchange,提问作者NIKOLAOS ILIOPOULOS
相关产品推荐
相关产品推荐

