本機 root 可登入,遠程工具連線報錯 Access denied for user 'root'@'x.x.x.x' 或連線逾時。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass123!' WITH GRANT OPTION; FLUSH PRIVILEGES;
'root'@'%' 允許任意 IP(生產建議改具體 IP:'root'@'192.168.1.%')WITH GRANT OPTION 允許該帳號再授權USE mysql;
INSERT INTO user (Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
VALUES ('%', 'root', PASSWORD('StrongPass123!'), '', '', '');
FLUSH PRIVILEGES;
結果驗證:
SELECT Host, User FROM mysql.user WHERE User='root'; +-----------+------+ | Host | User | +-----------+------+ | % | root | <-- 關鍵行 | 127.0.0.1 | root | | localhost | root | +-----------+------+
# CentOS 7 / RHEL 7 firewalld firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload # iptables 傳統 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT service iptables save # 阿里雲/雲廠商安全組:控制台添加入站規則 3306/TCP 允許來源 IP
# my.cnf [mysqld] bind-address = 0.0.0.0 # 監聽所有介面 # 或具體 IP bind-address = 192.168.1.100 # 註解掉或設 0.0.0.0 後必須重啟 systemctl restart mysqld
⚠️ 若配置檔無此項,預設即為 0.0.0.0(全介面監聽),無需添加。
| 步驟 | 指令 | 預期結果 |
|---|---|---|
| 本機連線 | mysql -uroot -p | 成功 |
| 遠程連線 | mysql -h ServerIP -uroot -p | 成功 |
| 埠監聽 | netstat -nat | grep 3306 | LISTEN 0.0.0.0:3306 |
| 用戶存在 | SELECT Host,User FROM mysql.user WHERE User='root'; | 含 '%' 行 |
root@'%',建立專用運維帳號 admin@'10.0.0.%'REQUIRE SSL 在 GRANT 中Host 欄雙重防護