my.cnf 綁定 0.0.0.0 或具體 IP,重啟服務--port 連接默認 root 僅允許 localhost。兩種授權方式:
mysql -u root -p
USE mysql;
UPDATE user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
-- 允許任意 IP
GRANT ALL PRIVILEGES ON *.* TO 'wow'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
-- 僅允許特定 IP
GRANT ALL PRIVILEGES ON *.* TO 'wow'@'192.168.83.56' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
關鍵坑:若 mysql.user 存在匿名用戶(User=''),會優先匹配導致新用戶無法登錄。須刪除:
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
vim /etc/mysql/my.cnf
# 註釋或修改
# bind-address = 127.0.0.1
bind-address = 0.0.0.0 # 監聽所有介面
# 或 bind-address = 192.168.11.12 # 僅監聽特定內網 IP
systemctl restart mysqld
驗證:netstat -ntlp | grep 3306 應顯示 0.0.0.0:3306 或指定 IP。
客戶端機器 MySQL 配置端口可能非 3306(如 3308),連接時必須顯式指定目標端口:
mysql -h 192.168.11.12 -u wow --port=3306 -p
若仍報 ERROR 2003 (HY000): Connection refused,排查:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT / 雲廠商安全組放行setsebool -P mysql_connect_any 1