MySQL默认使用3306端口提供服务,当该端口被其他程序占用,或者出于安全策略需要更换端口时,就需要手动调整MySQL的端口配置,同时同步修改客户端的连接参数,才能保证数据库正常访问。

一、确认当前MySQL端口
在修改端口前,可以先确认当前MySQL正在使用的端口,避免修改时选到已被占用的端口。登录MySQL后执行以下命令即可查看:
-- 查看当前MySQL监听的端口 SHOW VARIABLES LIKE 'port';
如果返回的结果是3306,说明当前使用的是默认端口,后续修改时可以更换为其他未被占用的端口,比如3307、3308等。
二、修改MySQL服务端端口配置
MySQL的端口配置存储在配置文件中,不同操作系统的配置文件路径和名称略有区别,下面分别说明。
1. Windows系统
Windows下MySQL的配置文件通常是安装目录下的my.ini,如果找不到可以通过服务属性查看:右键此电脑-管理-服务和应用程序-服务,找到MySQL服务,右键属性,查看可执行文件路径中的--defaults-file参数对应的路径就是配置文件位置。
打开配置文件后,找到[mysqld]段落,添加或修改port参数,示例如下:
[mysqld] # 设置MySQL监听的端口,替换为你需要使用的端口 port=3307 # 其他原有配置保持不变 basedir="C:/Program Files/MySQL/MySQL Server 8.0/" datadir="C:/ProgramData/MySQL/MySQL Server 8.0/Data"
2. Linux系统
Linux下MySQL的配置文件通常是/etc/my.cnf或者/etc/mysql/my.cnf,部分版本可能在/usr/etc/目录下。同样找到[mysqld]段落,修改port参数:
[mysqld] # 设置新的端口 port=3307 # 其他原有配置保持不变 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock
3. 重启MySQL服务使配置生效
修改完配置文件后,需要重启MySQL服务才能让新的端口配置生效。
- Windows系统:可以在服务管理界面找到MySQL服务,右键选择重启;也可以用管理员身份打开命令提示符执行
net stop mysql & net start mysql(如果服务名不是mysql,替换为实际的服务名)。 - Linux系统:执行
systemctl restart mysqld(CentOS/RHEL系列)或者service mysql restart(Debian/Ubuntu系列)。
三、调整客户端连接配置
服务端端口修改后,所有连接MySQL的客户端都需要同步调整端口参数,否则会出现连接失败的问题。
1. 命令行客户端连接
使用mysql命令连接时,需要加上-P参数指定新的端口:
# 替换端口为实际修改的端口,用户名为你的MySQL用户名 mysql -u root -p -P 3307
2. 应用程序连接配置调整
不同编程语言的MySQL连接配置都需要修改端口参数,以下是常见语言的示例:
Python(使用pymysql)
import pymysql
# 连接配置中修改port参数为新的端口
conn = pymysql.connect(
host='127.0.0.1',
port=3307, # 替换为修改后的端口
user='root',
password='your_password',
database='test_db'
)
Java(使用JDBC)
import java.sql.Connection;
import java.sql.DriverManager;
public class MysqlConnect {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1:3307/test_db?useSSL=false"; // URL中加上新端口
String user = "root";
String password = "your_password";
try {
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("连接成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
PHP(使用mysqli扩展)
<?php
$host = '127.0.0.1';
$port = 3307; // 替换为新端口
$user = 'root';
$password = 'your_password';
$database = 'test_db';
$conn = new mysqli($host, $user, $password, $database, $port);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
四、常见问题排查
修改端口后如果无法连接,可以从以下几个方面排查:
- 检查端口是否被占用:可以用
netstat -ano | findstr 3307(Windows)或者netstat -tlnp | grep 3307(Linux)查看端口是否被其他程序占用,如果被占用需要更换其他端口。 - 检查防火墙是否放行新端口:如果服务器开启了防火墙,需要把新的MySQL端口加入放行规则,否则远程客户端无法访问。
- 检查配置文件是否修改正确:确认
port参数是在[mysqld]段落下,而不是其他段落,修改后是否重启了服务。
注意:如果是生产环境的MySQL,修改端口前建议先备份配置文件,避免修改错误导致服务无法启动,修改后先测试本地连接,再开放远程访问权限。