MySQL 權限系統以 User + Host 雙主鍵識別帳號。預設 root@localhost 僅允許本機連線,遠程需額外授權。
mysql -u root -p
USE mysql;
-- 查看現狀
SELECT User, Host FROM user WHERE User='root';
-- 修改為允許所有 IP (通配符 %)
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';
-- 或新增一條遠程記錄 (保留 localhost)
INSERT INTO user (Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
VALUES ('%', 'root', '', '', '', '')
ON DUPLICATE KEY UPDATE Host='%';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
root - localhost → 點擊「編輯權限」% (或新增一行 root / %)FLUSH PRIVILEGESERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
-- 原因:已存在 root@% 記錄
-- 解決:直接 FLUSH PRIVILEGES 或刪除舊記錄後重建
app_user@'10.0.0.%'GRANT ... TO 'user'@'192.168.1.0/255.255.255.0' (支援 CIDR,MySQL 8.0+)REQUIRE SSL 強制加密傳輸SELECT User, Host FROM mysql.user WHERE Host='%';核心概念: MySQL 權限 =
User + Host組合。localhost≠127.0.0.1≠%。修改 Host 欄位即改變「從哪裡可以連線」,**不影響密碼**。