You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL登录端口修改、2002错误排查及PHP mysqli端口设置方法

问题解答

一、端口值为0的原因及2002错误修复

原因

MySQL端口显示为0,说明你的MySQL服务未启用TCP/IP协议监听,仅通过Unix套接字(Linux/macOS环境)或Windows命名管道提供连接。而你上传CSV时触发的2002错误,本质是客户端尝试通过TCP/IP协议连接数据库,但服务未在任何TCP端口上监听,导致连接失败。

修复方法

1. 临时启用TCP/IP监听(单次生效)

启动MySQL时手动指定端口和绑定地址:

# Linux/macOS
mysqld --port=3306 --bind-address=127.0.0.1

# Windows(需进入MySQL安装目录的bin文件夹)
mysqld.exe --port=3306 --bind-address=127.0.0.1

2. 永久配置(重启后生效)

修改MySQL的配置文件,不同系统路径不同:

  • Linux/macOS:通常是/etc/my.cnf或/etc/mysql/my.cnf
  • Windows:通常是C:\ProgramData\MySQL\MySQL Server X.X\my.ini(X.X为版本号)

在[mysqld]段添加或修改以下配置:

[mysqld]
port = 3306
bind-address = 127.0.0.1

保存后重启MySQL服务:

# Linux
systemctl restart mysql

# Windows
# 打开服务管理器,找到MySQL服务并重启

配置完成后,再执行以下命令验证端口是否生效:

mysql -u root -e "SHOW VARIABLES WHERE Variable_name = 'port';"

正常情况下会返回端口值3306。

二、PHP中mysqli设置端口的两种方式

针对你当前的代码,有两种方法指定端口:

方法1:在主机地址后追加:端口号

$database = new mysqli("127.0.0.1:3306", "root", "funkytown", "houston");

方法2:使用构造函数的第五个参数

mysqli构造函数的参数顺序为:主机, 用户名, 密码, 数据库名, 端口, 套接字路径,直接传入端口号即可:

$database = new mysqli("127.0.0.1", "root", "funkytown", "houston", 3306);

如果想改用套接字连接(无需TCP/IP),可以将主机设为localhost(区别于127.0.0.1,PHP会自动使用套接字),或者手动指定套接字路径作为第六个参数(以Linux为例):

$database = new mysqli("localhost", "root", "funkytown", "houston", null, "/var/run/mysqld/mysqld.sock");

内容的提问来源于stack exchange,提问作者elksie5000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:01:14