MySQL 默认端口是 3306,修改它主要是为了安全加固或避免端口冲突。改端口本身不难,但需同步更新客户端连接配置,否则会连不上。
修改 MySQL 配置文件中的端口
找到 MySQL 的主配置文件(通常是 my.cnf 或 my.ini),在 [mysqld] 段落下添加或修改 port 参数:
Linux/macOS 路径常见为:/etc/my.cnf、/etc/mysql/my.cnf 或 /usr/etc/my.cnf Windows 下一般是:C:\ProgramData\MySQL\MySQL Server X.X\my.ini(注意 ProgramData 是隐藏文件夹) 编辑时加入一行:port = 3307(换成你想要的非特权端口,1024–65535 之间) 保存后必须重启 MySQL 服务才生效:systemctl restart mysqld(Linux)或服务管理器中重启(Windows)确认端口已生效
重启后别急着连,先验证 MySQL 是否真在新端口监听:
Linux/macOS:运行 netstat -tuln | grep :3307 或 ss -tuln | grep :3307 登录 MySQL 后执行:SHOW VARIABLES LIKE 'port'; —— 查看实际使用的端口号 用 telnet 或 nc 测试本地连通性:telnet 127.0.0.1 3307更新客户端连接方式
端口改了,所有连接 MySQL 的地方都要同步调整:
命令行连接需显式指定端口:mysql -u root -p -P 3307(注意大写 P) 应用程序(如 PHP、Python、Java)的数据库连接字符串里,把 :3306 改成 :3307 图形工具(如 Navicat、DBeaver、MySQL Workbench)新建连接时,主机后面填端口,例如:127.0.0.1:3307 如果使用 socket 连接(localhost 默认走 socket),要改成 TCP 连接,即用 127.0.0.1 而不是 localhost防火墙和 SELinux(Linux)注意事项
仅改配置还不够,系统级防护可能拦住新端口:
开放对应端口:firewall-cmd --permanent --add-port=3307/tcp,再 reload SELinux 若启用,需添加端口类型:semanage port -a -t mysqld_port_t -p tcp 3307 云服务器(如阿里云、腾讯云)还需在安全组中放行该端口