| 項目 | 實例 1 (3306) | 實例 2 (3307) |
|---|---|---|
| datadir | /home/mysql_3306 | /home/mysql_3307 |
| basedir | /usr | /usr |
| socket | /home/mysql_3306/mysql.sock | /home/mysql_3307/mysql.sock |
mysql -S /home/mysql_3307/mysql.sock > SHOW VARIABLES LIKE '%sock%'; +---------------+-----------------------------+ | Variable_name | Value | +---------------+-----------------------------+ | socket | /home/mysql_3306/mysql.sock | -- 錯誤!連到實例1 +---------------+-----------------------------+
檢查 /etc/my.cnf 發現 [client] 區段設定了 host = 127.0.0.1。
核心機制:MySQL 客戶端同時指定 socket 與 host 時,會優先使用 TCP/IP 協議連線,socket 參數被忽略,預設連接 3306 端口。
| 指令 | 指定 socket | 指定 host | 實際連接 |
|---|---|---|---|
| mysql -S /home/mysql_3307/mysql.sock -h 127.0.0.1 -P 3307 | 3307 | 127.0.0.1 | 3307 ✓ |
| mysql -S /home/mysql_3307/mysql.sock -h 127.0.0.1 | 3307 | 127.0.0.1 | 3306 ✗(預設端口) |
| mysql -S /home/mysql_3306/mysql.sock -h 127.0.0.1 -P 3307 | 3306 | 127.0.0.1 | 3307 ✓ |
[client] 區段的 host = 127.0.0.1 改為 host = localhost 或註解掉mysql -S /home/mysql_3307/mysql.sock > SHOW VARIABLES LIKE '%sock%'; +---------------+-----------------------------+ | socket | /home/mysql_3307/mysql.sock | -- 正確! +---------------+-----------------------------+
[client] 區段勿設定 host,或明確設為 localhost(啟用 Unix Socket)-P 參數而非依賴 socketmy.cnf,避免配置衝突