news 2026/4/24 8:25:26

MySQL修改端口号图文教程:从配置到验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL修改端口号图文教程:从配置到验证

MySQL修改端口号图文教程:从配置到验证

    • 引言
    • 1. 修改端口前的准备工作
      • 1.1 查看当前MySQL端口
      • 1.2 检查新端口是否可用
    • 2. 修改MySQL配置文件
      • 2.1 找到MySQL配置文件
      • 2.2 备份配置文件
      • 2.3 修改配置文件
      • 2.4 配置文件详解
    • 3. 重启MySQL服务
      • 3.1 Linux系统
      • 3.2 Windows系统
      • 3.3 macOS系统
    • 4. 验证端口修改
      • 4.1 检查服务监听端口
      • 4.2 登录验证
      • 4.3 测试旧端口是否失效
    • 5. 客户端连接配置修改
      • 5.1 命令行连接
      • 5.2 Java应用配置
      • 5.3 Python应用配置
      • 5.4 PHP应用配置
      • 5.5 Navicat/DBeaver等图形工具
    • 6. 防火墙配置
      • 6.1 Linux防火墙(iptables)
      • 6.2 Linux防火墙(firewalld)
      • 6.3 Windows防火墙
    • 7. 常见问题排查
      • 7.1 MySQL启动失败
      • 7.2 配置文件权限问题
      • 7.3 SELinux阻止(CentOS/RHEL)
    • 8. 多实例配置示例
    • 9. 安全建议
      • 9.1 限制连接IP
      • 9.2 创建专用用户
    • 总结

🌺The Begin🌺点点关注,收藏不迷路🌺

引言

MySQL默认使用3306端口,但在某些场景下我们需要修改这个默认端口:

  • 端口冲突:3306端口被其他应用程序占用
  • 安全考虑:修改默认端口可以降低被自动化攻击的风险
  • 多实例运行:一台服务器运行多个MySQL实例需要不同端口

本文将详细介绍如何修改MySQL的端口号,包括配置文件修改、服务重启和验证方法。

1. 修改端口前的准备工作

1.1 查看当前MySQL端口

在修改之前,先确认当前MySQL使用的端口:

# 方法1:登录MySQL查看mysql -u root -p mysql>SHOW VARIABLES LIKE'port';
+---------------+-------+|Variable_name|Value|+---------------+-------+|port|3306|+---------------+-------+1rowinset(0.01sec)
# 方法2:使用netstat查看netstat-tlnp|grepmysql# 或ss -tlnp|grepmysql

1.2 检查新端口是否可用

确保要修改的新端口没有被占用:

# 检查5350端口是否被占用netstat-tlnp|grep5350# 如果没有输出,说明端口可用

2. 修改MySQL配置文件

2.1 找到MySQL配置文件

MySQL的配置文件通常位于以下位置之一:

操作系统配置文件路径
Linux/etc/mysql/my.cnf/etc/my.cnf
WindowsC:\ProgramData\MySQL\MySQL Server X.X\my.ini
macOS/usr/local/mysql/etc/my.cnf

2.2 备份配置文件

修改前建议先备份配置文件:

# Linux/macOSsudocp/etc/mysql/my.cnf /etc/mysql/my.cnf.bak# Windows(管理员CMD)copy"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini""C:\ProgramData\MySQL\MySQL Server 8.0\my.ini.bak"

2.3 修改配置文件

使用vim编辑配置文件(Linux/macOS):

sudovim/etc/mysql/my.cnf

[mysqld]部分添加或修改端口配置:

[mysqld] # 修改端口号为5350 port = 5350 # 其他配置保持不变... datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock

Windows系统修改my.ini:

[mysqld] # 修改端口号为5350 port=5350 # 其他配置... basedir=C:/Program Files/MySQL/MySQL Server 8.0/ datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data

2.4 配置文件详解

[mysqld] # 监听的端口号(默认3306) port = 5350 # 绑定IP地址,0.0.0.0表示监听所有网卡 bind-address = 0.0.0.0 # 如果只想本地访问,可以设置为 # bind-address = 127.0.0.1 # 其他常用配置 max_connections = 500 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

3. 重启MySQL服务

修改配置文件后,需要重启MySQL服务使配置生效:

3.1 Linux系统

# 使用systemd(主流Linux发行版)sudosystemctl restart mysql# 或sudosystemctl restart mysqld# 使用service命令sudoservicemysql restart# 查看服务状态sudosystemctl status mysql

3.2 Windows系统

# 以管理员身份运行CMD # 停止MySQL服务 net stop MySQL84 # 启动MySQL服务 net start MySQL84 # 或者在服务管理器中重启 # 按Win + R,输入 services.msc # 找到MySQL服务,右键点击"重启"

3.3 macOS系统

# 使用brew安装的MySQLbrew services restart mysql# 使用官方安装包sudo/usr/local/mysql/support-files/mysql.server restart

4. 验证端口修改

4.1 检查服务监听端口

# Linux/macOSnetstat-tlnp|grep5350# 或ss -tlnp|grep5350# 输出示例tcp600:::5350 :::* LISTEN12345/mysqld

4.2 登录验证

# 连接时需要指定新端口mysql -u root -p -P5350# 如果连接成功,进入MySQL后查看端口mysql>SHOW VARIABLES LIKE'port';
+---------------+-------+|Variable_name|Value|+---------------+-------+|port|5350|+---------------+-------+1rowinset(0.00sec)

4.3 测试旧端口是否失效

# 使用旧端口3306连接应该失败mysql -u root -p -P3306# 输出: ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (111)

5. 客户端连接配置修改

修改端口后,所有连接MySQL的应用也需要相应调整:

5.1 命令行连接

# 方式1:使用-P参数指定端口mysql -h localhost -u root -p -P5350# 方式2:在连接字符串中指定mysql --host=localhost --port=5350--user=root --password

5.2 Java应用配置

# application.properties spring.datasource.url=jdbc:mysql://localhost:5350/mydb?useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456
# application.ymlspring:datasource:url:jdbc:mysql://localhost:5350/mydb?useSSL=false&serverTimezone=Asia/Shanghaiusername:rootpassword:123456

5.3 Python应用配置

importpymysql# 连接MySQLconnection=pymysql.connect(host='localhost',port=5350,# 指定新端口user='root',password='123456',database='mydb')

5.4 PHP应用配置

// PDO连接$dsn='mysql:host=localhost;port=5350;dbname=mydb;charset=utf8mb4';$username='root';$password='123456';try{$pdo=newPDO($dsn,$username,$password);echo"连接成功";}catch(PDOException$e){echo"连接失败: ".$e->getMessage();}

5.5 Navicat/DBeaver等图形工具

在创建连接时,修改端口号为5350:

新建连接

主机: localhost

端口: 5350

用户名: root

密码: ******

测试连接

6. 防火墙配置

如果开启了防火墙,需要放行新端口:

6.1 Linux防火墙(iptables)

# 放行5350端口sudoiptables -A INPUT -p tcp --dport5350-j ACCEPT# 保存规则sudoserviceiptables save

6.2 Linux防火墙(firewalld)

# 放行5350端口sudofirewall-cmd --permanent --add-port=5350/tcpsudofirewall-cmd --reload# 查看已放行端口sudofirewall-cmd --list-ports

6.3 Windows防火墙

# PowerShell管理员模式New-NetFirewallRule-DisplayName"MySQL 5350"-Direction Inbound-Protocol TCP-LocalPort 5350-Action Allow

7. 常见问题排查

7.1 MySQL启动失败

# 查看错误日志sudotail-f /var/log/mysql/error.log# 常见错误:端口被占用# 2024-01-15T10:30:45.123456Z 0 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use

解决方案

# 检查端口占用sudolsof-i :5350# 杀掉占用进程或更换其他端口

7.2 配置文件权限问题

# 确保MySQL用户可读配置文件sudochmod644/etc/mysql/my.cnfsudochownmysql:mysql /etc/mysql/my.cnf

7.3 SELinux阻止(CentOS/RHEL)

# 查看SELinux状态getenforce# 临时禁用(测试用)setenforce0# 永久放行MySQL新端口semanage port -a -t mysqld_port_t -p tcp5350

8. 多实例配置示例

如果一台服务器运行多个MySQL实例,可以这样配置:

# 实例1: my.cnf [mysqld] port = 3306 datadir = /var/lib/mysql1 socket = /var/lib/mysql1/mysql.sock # 实例2: my2.cnf [mysqld] port = 5350 datadir = /var/lib/mysql2 socket = /var/lib/mysql2/mysql.sock

启动多个实例:

# 启动第一个实例mysqld --defaults-file=/etc/mysql/my.cnf&# 启动第二个实例mysqld --defaults-file=/etc/mysql/my2.cnf&

9. 安全建议

修改端口后,建议同时进行以下安全配置:

9.1 限制连接IP

[mysqld] port = 5350 # 只允许本地连接 bind-address = 127.0.0.1 # 或者允许特定IP # bind-address = 192.168.1.100

9.2 创建专用用户

-- 创建仅限特定IP连接的用户CREATEUSER'app_user'@'192.168.1.%'IDENTIFIEDBY'StrongPassword123!';GRANTALLPRIVILEGESONmydb.*TO'app_user'@'192.168.1.%';FLUSHPRIVILEGES;

总结

修改MySQL端口号的完整流程:

步骤操作命令/说明
1检查当前端口SHOW VARIABLES LIKE 'port';
2修改配置文件[mysqld]下添加port=5350
3重启服务sudo systemctl restart mysql
4验证修改netstat -tlnp | grep 5350
5测试连接mysql -P 5350 -u root -p
6更新应用配置修改数据库连接URL
7配置防火墙放行5350端口

注意事项

  • 修改前备份配置文件
  • 确保新端口未被占用
  • 重启服务前保存所有工作
  • 更新所有应用的数据库连接配置


🌺The End🌺点点关注,收藏不迷路🌺
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 21:12:38

Local Moondream2在.NET环境下的集成开发实战

Local Moondream2在.NET环境下的集成开发实战 让.NET开发者也能轻松玩转视觉AI,本地部署无缝集成,快速构建智能图像应用 1. 开篇:为什么选择Local Moondream2? 如果你正在寻找一个既轻量又强大的视觉语言模型,而且希望…

作者头像 李华
网站建设 2026/4/18 21:12:39

导师严选!备受喜爱的降AI率软件 —— 千笔·降AI率助手

在AI技术迅速渗透学术写作领域的今天,越来越多的学生开始借助AI工具提升论文写作效率。然而,随着各大查重系统对AI生成内容的识别能力不断提升,AI率超标问题逐渐成为毕业论文中难以忽视的“隐形炸弹”。许多学生在使用各类降AI率和降重复率工…

作者头像 李华
网站建设 2026/4/18 13:51:01

Qwen3-ASR-0.6B开源大模型实战:6亿参数模型如何兼顾速度与精度?

Qwen3-ASR-0.6B开源大模型实战:6亿参数模型如何兼顾速度与精度? 1. 项目简介 Qwen3-ASR-0.6B是阿里云通义千问团队推出的轻量级语音识别模型,专门为本地部署场景设计。这个只有6亿参数的模型在保持出色识别精度的同时,大幅降低了…

作者头像 李华
网站建设 2026/4/18 4:17:34

RetinaFace模型在Kubernetes集群上的弹性部署

RetinaFace模型在Kubernetes集群上的弹性部署 面对实时人脸检测服务的高并发需求,传统单机部署方式往往力不从心。本文将手把手带你实现RetinaFace模型在Kubernetes集群上的弹性部署,让服务自动扩缩容,轻松应对流量波动。 1. 环境准备与基础概…

作者头像 李华
网站建设 2026/4/18 6:45:30

LongCat-Image-Editn企业提效方案:市场部日均百张宣传图AI自动化编辑

LongCat-Image-Editn企业提效方案:市场部日均百张宣传图AI自动化编辑 1. 为什么市场部急需这张“会听话的修图工具” 你有没有见过这样的场景: 早上九点,市场部同事刚开完选题会,马上要为下午三点的电商大促准备十张主图&#x…

作者头像 李华
网站建设 2026/4/18 1:22:09

基于BGE-Large-Zh的简历匹配系统:HR效率提升50%案例

基于BGE-Large-Zh的简历匹配系统:HR效率提升50%案例 1. 引言 每天面对数百份简历,HR团队需要花费大量时间手动筛选合适人选。传统的关键词匹配方法往往漏掉优秀人才,或者误判候选人的实际能力。这种低效的筛选过程不仅延长了招聘周期&#…

作者头像 李华