每个MySQL实例必须绑定唯一port和唯一socket路径,否则启动失败或连接错乱;端口冲突导致“Can't start server”或静默退出,socket重复引发连接中断与误报,且client/mysql/mysqld三段配置须严格对齐。

每个 MySQL 实例必须绑定唯一 port 和唯一 socket 文件路径,否则启动会失败或连接错乱——这不是可选优化项,而是硬性隔离前提。
端口冲突会导致 mysqld 启动静默失败
MySQL 不会在端口被占用时抛出明确错误,而是直接退出(日志里可能只写 Can't start server: Bind on TCP/IP port 或干脆没记录)。尤其当第一个实例用默认 3306 启动后,第二个实例若仍设 port = 3306,mysqld --initialize 可能成功,但 mysqld_safe 或 mysqld 启动时会卡住或秒退。
- 务必在
my.cnf的[mysqld]段显式声明port,不要依赖默认值 - 检查端口是否空闲:
ss -tln | grep :3307(替换为你想用的端口) - 避免使用 3306、3307、3308 这类连续端口做生产部署——某些云平台安全组或 SELinux 策略会对连续端口批量拦截
- 如果用
mysqld_multi,[mysqld1]和[mysqld2]必须分别指定不同port,且不能与[mysqld_multi]段的全局配置冲突
socket 文件路径必须绝对唯一且目录可写
socket 是本地 Unix 域套接字,用于 mysql -S /path/to/socket 连接。若两个实例共用同一 socket 路径,后启动的实例会覆盖前者的 socket 文件,导致前者连接中断,且 mysqladmin ping 可能误报“alive”。
-
socket路径需写全路径,如/data/mysql/instance1/socket/mysql.sock,不能是相对路径或/tmp/mysql.sock这类共享位置 - 确保 socket 所在目录存在且属主为
mysql用户:mkdir -p /data/mysql/instance1/socket && chown mysql:mysql /data/mysql/instance1/socket -
client段和mysql段也必须同步配置对应socket,否则mysql命令行客户端连不上本实例(它默认读[client]下的socket) - 若用 systemd 管理,
SocketPath=配置项必须与 my.cnf 中的socket一致,否则 socket 激活机制失效
my.cnf 中 client / mysql / mysqld 三段 socket 配置要对齐
很多人只改了 [mysqld] 的 socket,忘了 [client] 和 [mysql] 段——结果用 mysql -u root -p 尝试连接时,客户端仍去找默认 /var/lib/mysql/mysql.sock,报错 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'。
- 完整示例(instance1):
[client] port = 3307 socket = /data/mysql/instance1/socket/mysql.sock [mysql] socket = /data/mysql/instance1/socket/mysql.sock [mysqld] port = 3307 socket = /data/mysql/instance1/socket/mysql.sock datadir = /data/mysql/instance1/data pid-file = /data/mysql/instance1/mysql.pid log-error = /data/mysql/instance1/log/error.log
- 注意:所有路径中的目录必须提前创建,
mysqld不会自动建父目录;log-error对应文件无需手动 touch,但目录必须存在且可写 - 若用
mysqld --defaults-file=xxx启动,该文件中所有段落都生效;但若用mysqld_safe --defaults-file=xxx,它只读取[mysqld_safe]和[mysqld],[client]段无效
最容易被忽略的是:socket 路径长度不能超过 107 字节(Linux Unix domain socket 限制),过长路径会导致启动失败且错误信息极不直观;建议把实例目录控制在 /data/mysql/i1/ 这类短路径下,而不是嵌套多层带时间戳的长名。











