# 1. 編輯配置文件
vi /etc/my.cnf # Linux
notepad my.ini # Windows
# 2. 在 [mysqld] 區段修改/新增
[mysqld]
port = 3306 # 改為目標端口,如 3307
# datadir, socket 等其他參數保持
# 3. 【關鍵】同步修改 [client] 區段,否則 mysql 命令列預設仍連 3306
[client]
port = 3307
socket = /var/lib/mysql/mysql.sock # Linux 需同步 socket 路徑
# 4. 重啟服務
systemctl restart mysqld # Linux
net stop mysql & net start mysql # Windows
# 5. 驗證
mysql -u root -p -P 3307 # -P 大寫指定端口
SHOW VARIABLES LIKE 'port';
| 實例 | port | socket | datadir | 配置文件 |
|---|---|---|---|---|
| 實例 1 (主) | 3306 | /tmp/mysql_3306.sock | /data/mysql_3306 | /etc/my_3306.cnf |
| 實例 2 (備/測試) | 3307 | /tmp/mysql_3307.sock | /data/mysql_3307 | /etc/my_3307.cnf |
啟動命令:
mysqld --defaults-file=/etc/my_3306.cnf &
mysqld --defaults-file=/etc/my_3307.cnf &
客戶端連線:
mysql --defaults-file=/etc/my_3307.cnf -u root -p # 自動讀取 port/socket
# 或顯式指定
mysql -h 127.0.0.1 -P 3307 -u root -p # 注意:-h 127.0.0.1 強制 TCP,不走 socket
# Linux firewalld
firewall-cmd --permanent --add-port=3307/tcp
firewall-cmd --reload
# iptables
iptables -A INPUT -p tcp --dport 3307 -j ACCEPT
# 雲廠商控制台:安全組入站規則加 3307
# 允許 mysqld 綁定非標準端口
semanage port -a -t mysqld_port_t -p tcp 3307
# 或臨時關閉 SELinux 驗證
setenforce 0
netstat -tlnp | grep 3307 / ss -tlnp | grep 3307 檢查。-p 3307:3306 宿主機 3307 映射容器內 3306,容器內配置無需改。修改 MySQL 端口 = 配置文件雙區段同步 + 服務重啟 + 防火牆/SELinux 放行 + 客戶端驗證。多實例核心在於端口、socket、datadir、配置文件四獨立,啟動時用 --defaults-file 隔離。