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|grepmysql1.2 检查新端口是否可用
确保要修改的新端口没有被占用:
# 检查5350端口是否被占用netstat-tlnp|grep5350# 如果没有输出,说明端口可用2. 修改MySQL配置文件
2.1 找到MySQL配置文件
MySQL的配置文件通常位于以下位置之一:
| 操作系统 | 配置文件路径 |
|---|---|
| Linux | /etc/mysql/my.cnf或/etc/my.cnf |
| Windows | C:\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.sockWindows系统修改my.ini:
[mysqld] # 修改端口号为5350 port=5350 # 其他配置... basedir=C:/Program Files/MySQL/MySQL Server 8.0/ datadir=C:/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后查看端口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 --password5.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:1234565.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:
6. 防火墙配置
如果开启了防火墙,需要放行新端口:
6.1 Linux防火墙(iptables)
# 放行5350端口sudoiptables -A INPUT -p tcp --dport5350-j ACCEPT# 保存规则sudoserviceiptables save6.2 Linux防火墙(firewalld)
# 放行5350端口sudofirewall-cmd --permanent --add-port=5350/tcpsudofirewall-cmd --reload# 查看已放行端口sudofirewall-cmd --list-ports6.3 Windows防火墙
# PowerShell管理员模式New-NetFirewallRule-DisplayName"MySQL 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] 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.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.cnf&9. 安全建议
修改端口后,建议同时进行以下安全配置:
9.1 限制连接IP
[mysqld] port = 5350 # 只允许本地连接 bind-address = 127.0.0.1 # 或者允许特定IP # bind-address = 192.168.1.1009.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🌺点点关注,收藏不迷路🌺 |