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

解決 MySQL 無法遠端登入的三種常見方案與權限配置詳解

     編輯:MySQL 綜合教學

錯誤現象

Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server —— 典型權限不足錯誤。

方案一:授權特定 IP/主機名(標準做法)

shell> mysql -u root -p
mysql> USE mysql;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON db_name.* TO 'username'@'ip_or_hostname' IDENTIFIED BY 'password';
  • ip_or_hostname 可為 IP(如 192.168.1.100)或反解主機名(含引號)。
  • 需全權限時,可逐項設定 _priv='Y' 或使用 GRANT ALL PRIVILEGES(但不含 GRANT 權限)。

方案二:建立通用遠端帳號(開發環境適用)

mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON *.* TO 'xuys'@'192.168.88.234' IDENTIFIED BY 'xuys1234';
mysql> USE mysql;
mysql> UPDATE user SET host='%' WHERE user='xuys';  -- 允許任意主機
mysql> FLUSH PRIVILEGES;

若仍無法連線,檢查 db 表是否有對應記錄,必要時插入:

INSERT INTO db VALUES('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
UPDATE db SET host='%' WHERE user='xuys';
FLUSH PRIVILEGES;

方案三:phpMyAdmin 連線遠端資料庫設定

  1. 遠端建立帳號並設 host='%':
GRANT SELECT,UPDATE,INSERT,DELETE ON *.* TO 'sss'@'192.168.0.114' IDENTIFIED BY 'sss';
UPDATE user SET host='%' WHERE user='sss';
FLUSH PRIVILEGES;
  1. 重啟 MySQL:
mysqladmin -u root -p reload
mysqladmin -u root -p shutdown
/etc/rc.d/init.d/mysqld start
  1. 修改 phpMyAdmin config.inc.php:
$cfg['Servers'][$i]['host'] = 'remote_ip';
$cfg['Servers'][$i]['user'] = 'sss';
$cfg['Servers'][$i]['password'] = 'sss_password';

關鍵提醒

  • GRANT ALL PRIVILEGES 不包含 GRANT 權限,需手動 UPDATE user SET Grant_priv='Y' WHERE user='...'。
  • 任何權限變更必須執行 FLUSH PRIVILEGES 或 mysqladmin reload 生效。
  • 生產環境嚴禁使用 host='%' 的 root 帳號,應建立最小權限應用帳號並限制來源 IP。

相關延伸閱讀

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved