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

📅 发布时间:2026/7/6 5:20:03 👁️ 浏览次数:
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防火墙iptables6.2 Linux防火墙firewalld6.3 Windows防火墙7. 常见问题排查7.1 MySQL启动失败7.2 配置文件权限问题7.3 SELinux阻止CentOS/RHEL8. 多实例配置示例9. 安全建议9.1 限制连接IP9.2 创建专用用户总结The Begin点点关注收藏不迷路引言MySQL默认使用3306端口但在某些场景下我们需要修改这个默认端口端口冲突3306端口被其他应用程序占用安全考虑修改默认端口可以降低被自动化攻击的风险多实例运行一台服务器运行多个MySQL实例需要不同端口本文将详细介绍如何修改MySQL的端口号包括配置文件修改、服务重启和验证方法。1. 修改端口前的准备工作1.1 查看当前MySQL端口在修改之前先确认当前MySQL使用的端口# 方法1登录MySQL查看mysql -u root -p mysqlSHOW VARIABLES LIKEport;----------------------|Variable_name|Value|----------------------|port|3306|----------------------1rowinset(0.01sec)# 方法2使用netstat查看netstat-tlnp|grepmysql# 或ss -tlnp|grepmysql1.2 检查新端口是否可用确保要修改的新端口没有被占用# 检查5350端口是否被占用netstat-tlnp|grep5350# 如果没有输出说明端口可用2. 修改MySQL配置文件2.1 找到MySQL配置文件MySQL的配置文件通常位于以下位置之一操作系统配置文件路径Linux/etc/mysql/my.cnf或/etc/my.cnfWindowsC:\ProgramData\MySQL\MySQL Server X.X\my.inimacOS/usr/local/mysql/etc/my.cnf2.2 备份配置文件修改前建议先备份配置文件# Linux/macOSsudocp/etc/mysql/my.cnf /etc/mysql/my.cnf.bak# Windows管理员CMDcopyC:\ProgramData\MySQL\MySQL Server 8.0\my.iniC:\ProgramData\MySQL\MySQL Server 8.0\my.ini.bak2.3 修改配置文件使用vim编辑配置文件Linux/macOSsudovim/etc/mysql/my.cnf在[mysqld]部分添加或修改端口配置[mysqld] # 修改端口号为5350 port 5350 # 其他配置保持不变... datadir /var/lib/mysql socket /var/lib/mysql/mysql.sockWindows系统修改my.ini[mysqld] # 修改端口号为5350 port5350 # 其他配置... basedirC:/Program Files/MySQL/MySQL Server 8.0/ datadirC:/ProgramData/MySQL/MySQL Server 8.0/Data2.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_ci3. 重启MySQL服务修改配置文件后需要重启MySQL服务使配置生效3.1 Linux系统# 使用systemd主流Linux发行版sudosystemctl restart mysql# 或sudosystemctl restart mysqld# 使用service命令sudoservicemysql restart# 查看服务状态sudosystemctl status mysql3.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 restart4. 验证端口修改4.1 检查服务监听端口# Linux/macOSnetstat-tlnp|grep5350# 或ss -tlnp|grep5350# 输出示例tcp600:::5350 :::* LISTEN12345/mysqld4.2 登录验证# 连接时需要指定新端口mysql -u root -p -P5350# 如果连接成功进入MySQL后查看端口mysqlSHOW VARIABLES LIKEport;----------------------|Variable_name|Value|----------------------|port|5350|----------------------1rowinset(0.00sec)4.3 测试旧端口是否失效# 使用旧端口3306连接应该失败mysql -u root -p -P3306# 输出: ERROR 2003 (HY000): Cant 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 --hostlocalhost --port5350--userroot --password5.2 Java应用配置# application.properties spring.datasource.urljdbc:mysql://localhost:5350/mydb?useSSLfalseserverTimezoneAsia/Shanghai spring.datasource.usernameroot spring.datasource.password123456# application.ymlspring:datasource:url:jdbc:mysql://localhost:5350/mydb?useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:1234565.3 Python应用配置importpymysql# 连接MySQLconnectionpymysql.connect(hostlocalhost,port5350,# 指定新端口userroot,password123456,databasemydb)5.4 PHP应用配置// PDO连接$dsnmysql:hostlocalhost;port5350;dbnamemydb;charsetutf8mb4;$usernameroot;$password123456;try{$pdonewPDO($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 save6.2 Linux防火墙firewalld# 放行5350端口sudofirewall-cmd --permanent --add-port5350/tcpsudofirewall-cmd --reload# 查看已放行端口sudofirewall-cmd --list-ports6.3 Windows防火墙# PowerShell管理员模式New-NetFirewallRule-DisplayNameMySQL 5350-Direction Inbound-Protocol TCP-LocalPort 5350-Action Allow7. 常见问题排查7.1 MySQL启动失败# 查看错误日志sudotail-f /var/log/mysql/error.log# 常见错误端口被占用# 2024-01-15T10:30:45.123456Z 0 [ERROR] Cant 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.cnf7.3 SELinux阻止CentOS/RHEL# 查看SELinux状态getenforce# 临时禁用测试用setenforce0# 永久放行MySQL新端口semanage port -a -t mysqld_port_t -p tcp53508. 多实例配置示例如果一台服务器运行多个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.cnf9. 安全建议修改端口后建议同时进行以下安全配置9.1 限制连接IP[mysqld] port 5350 # 只允许本地连接 bind-address 127.0.0.1 # 或者允许特定IP # bind-address 192.168.1.1009.2 创建专用用户-- 创建仅限特定IP连接的用户CREATEUSERapp_user192.168.1.%IDENTIFIEDBYStrongPassword123!;GRANTALLPRIVILEGESONmydb.*TOapp_user192.168.1.%;FLUSHPRIVILEGES;总结修改MySQL端口号的完整流程步骤操作命令/说明1检查当前端口SHOW VARIABLES LIKE port;2修改配置文件在[mysqld]下添加port53503重启服务sudo systemctl restart mysql4验证修改netstat -tlnp | grep 53505测试连接mysql -P 5350 -u root -p6更新应用配置修改数据库连接URL7配置防火墙放行5350端口注意事项修改前备份配置文件确保新端口未被占用重启服务前保存所有工作更新所有应用的数据库连接配置The End点点关注收藏不迷路