MySQL 用戶以 'user'@'host' 識別,host 決定允許連接的來源 IP/主機名。預設 root@localhost 僅允許本地連接。
-- 1. 登入 MySQL (本地或已授權主機)
mysql -u root -p
-- 2. 創建遠程訪問用戶 (指定 IP)
CREATE USER 'kay'@'192.168.1.8' IDENTIFIED BY 'kaypass';
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'kay'@'192.168.1.8';
-- 3. 或允許任意 IP (開發環境)
CREATE USER 'kay'@'%' IDENTIFIED BY 'kaypass';
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'kay'@'%';
-- 4. 刷新權限 (5.7 前必執行)
FLUSH PRIVILEGES;
USE mysql;
SELECT Host, User, authentication_string FROM user WHERE User='kay';
-- 應看到 kay | % (或具體 IP)
UPDATE user SET Host='%' WHERE User='kay' AND Host='192.168.1.8';
FLUSH PRIVILEGES;
iptables -A INPUT -s 192.168.1.8 -p tcp --dport 3306 -j ACCEPTmy.cnf bind-address = 0.0.0.0 (或具體內網 IP),不能是 127.0.0.1。修改後重啟。setsebool -P mysql_connect_any=1 或調整策略。my.cnf 加入 skip-name-resolve=1 禁用 DNS 反解,加速連接並避免主機名解析失敗。REQUIRE NONE。
USE mysql;
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv)
VALUES ('192.168.88.234', '%', 'xuys', 'Y','Y','Y','Y');
FLUSH PRIVILEGES;
現代版本優先使用 GRANT,db 表屬於舊權限體系殘留。
# Client 端
mysql -h 192.168.1.100 -u kay -p kaypass -e "SELECT 1;"
# 或 GUI 工具填入 Host/IP、User、Password、Port=3306
