Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server —— 典型權限不足錯誤。
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;
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;
mysqladmin -u root -p reload
mysqladmin -u root -p shutdown
/etc/rc.d/init.d/mysqld start
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。