首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 遠程連線設定指南:解決 Host not allowed 錯誤

     編輯:MySQL 綜合教學

MySQL 遠程存取授權完整步驟

預設情況下,MySQL 僅允許本地連線。若需開放遠程存取,必須在權限系統中建立允許任意主機(%)連線的使用者帳號。本文說明正確的授權流程,避免常見的「Field doesn't have a default value」與「Host not allowed」錯誤。

錯誤示範:直接操作 mysql.user 表

嘗試直接插入使用者記錄:

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'hadoop', '1');

在啟用 STRICT_TRANS_TABLES 模式(預設開啟)時,會拋出錯誤:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

原因在於 mysql.user 表包含多個無預設值的欄位,嚴格模式下不允許隱性預設值插入。

正確做法:使用 GRANT 指令

MySQL 內建權限指令會自動處理系統欄位,語法如下:

-- 授予所有權限給 hadoop 使用者,允許任意主機連線,密碼設為 1
GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'%' IDENTIFIED BY '1' WITH GRANT OPTION;

-- 立即刷新權限快取使設定生效
FLUSH PRIVILEGES;

指令解析

  • ALL PRIVILEGES:授予所有權限(SELECT、INSERT、UPDATE、DELETE 等)
  • ON *.*:套用至所有資料庫的所有資料表
  • 'hadoop'@'%':使用者 hadoop 可從任意主機(% 通配符)連線
  • IDENTIFIED BY '1':設定認證密碼
  • WITH GRANT OPTION:允許該使用者再將權限授予其他使用者
  • FLUSH PRIVILEGES:將權限表變更載入記憶體,立即生效

驗證連線

於遠程客戶機執行:

mysql -u hadoop -h  -p1

若成功進入 MySQL 監視器,即表示遠程授權設定完成。

安全性建議

  1. 生產環境請使用強密碼,避免預設弱密碼
  2. 若僅需特定 IP 存取,將 % 替換為具體 IP(如 '192.168.1.100')
  3. 配合防火牆限制 3306 埠僅對信任 IP 開放
  4. 定期審核 mysql.user 表,移除無用帳號
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved