MySQL 預設僅允許本機連線。本文提供建立遠端存取帳號的標準流程:建立特定 IP 帳號 → 修改為通配符 '%' → GRANT 完整權限 → FLUSH PRIVILEGES 生效 → 實測驗證。
mysql -u root -p
mysql> GRANT SELECT, UPDATE, INSERT, DELETE ON *.* TO 'root'@'192.168.1.12' IDENTIFIED BY 'root';
mysql> USE mysql;
mysql> SELECT host, user, password FROM user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 192.168.1.12 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+------+-------------------------------------------+
mysql> UPDATE user SET host = '%' WHERE user = 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
mysql> FLUSH PRIVILEGES; -- 關鍵!
mysql> SELECT host, user, password FROM user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 192.168.1.12 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+------+-------------------------------------------+
mysql> USE mysql;
mysql> UPDATE user SET host = '%' WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
bind-address = 0.0.0.0 (或註解掉),重啟 MySQLcaching_sha2_password 插件mysql_native_password:
CREATE USER 'remote'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql.user 表,移除無用帳號# 遠端機器測試
mysql -h -u root -p
# 成功進入 mysql> 提示符即設定完成
標準流程:建立帳號 → GRANT 權限 → FLUSH PRIVILEGES → 設定 bind-address → 開放防火牆 → 實測驗證。生產環境嚴禁 root '%',請遵循最小權限與來源 IP 限定原則。