# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
bind-address = 0.0.0.0 # 監聽所有介面
# 或具體 IP
bind-address = 192.168.1.100
重啟:systemctl restart mysqld
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
重啟後驗證:
mysql> STATUS;
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------------+
[mysql]
# 取消註釋或新增
auto-rehash
# 或 no-auto-rehash 關閉
重啟後進入 mysql,**先 USE db_name; 再按 Tab 鍵** 觸發表名/欄位名補全。
#!/bin/bash
# verify_mysql_config.sh
mysql -uroot -p -e "
SELECT @@bind_address AS bind_address;
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
STATUS;
"
| 現象 | 原因 | 解決 |
|---|---|---|
| bind-address=0.0.0.0 仍無法遠程連接 | 防火牆/安全組未放行 3306 | 開放埠口、檢查雲廠商安全組 |
| 字符集修改後舊表仍為 latin1 | ALTER TABLE 需 CONVERT TO | ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4; |
| Tab 補全不工作 | 未先 USE 資料庫 | 先執行 USE db; 再按 Tab |
| auto-rehash 導致啟動慢 | 資料庫/表極多時建立雜湊表耗時 | 大型實例可關閉 no-auto-rehash |