預設 bind-address = 127.0.0.1 僅監聽本地回環。
# 编辑 /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
# bind-address = 127.0.0.1 # 註釋掉或改為
bind-address = 0.0.0.0 # 監聽所有網卡
# 或指定具體 IP
bind-address = 192.168.1.100
修改後 必須重啟 MySQL:systemctl restart mysqld。
mysql -u root -p
USE mysql;
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;
-- 允許 kevin 從任意 IP 訪問所有庫
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
-- 僅允許特定 IP
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword';
% = 任意主機WITH GRANT OPTION 允許該用戶再授權他人(生產慎用)CREATE USER ...; GRANT ...;# CentOS 7+ firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
netstat -ntlp | grep 3306 顯示 0.0.0.0:3306 或指定 IPtelnet 3306 連通mysql -h -u kevin -p 登入成功GRANT ... TO 'app_user'@'%'; 應用專用賬號'app_user'@'192.168.1.%'REQUIRE SSLmysql.user 表