一、放开 Windows 3306 端口
以 管理员 CMD 执行:
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306
查看规则:
netsh advfirewall firewall show rule name=all | findstr 3306
二、确认 MySQL 正在监听 3306
执行:
netstat -ano | findstr 3306
正常结果:
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
说明 MySQL 正在监听。
三、登录 MySQL
你的 MySQL 在:
C:\phpstudy_pro\Extensions\MySQL8.0.12\
登录:
C:\phpstudy_pro\Extensions\MySQL8.0.12\bin\mysql.exe -u root -p
输入 root 密码进入。
四、查看当前用户权限
SELECT host,user FROM mysql.user;
你目前只有:
root | localhost
说明只允许本机连接。
五、开启远程访问权限
执行:
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
再次查看:
SELECT host,user FROM mysql.user;
应该看到:
root | %
root | localhost
% 表示允许任何主机连接。
六、检查 MySQL 监听地址
打开配置文件:
C:\phpstudy_pro\Extensions\MySQL8.0.12\my.ini
找到:
bind-address=127.0.0.1
改成:
bind-address=0.0.0.0
或者直接删除这一行。
七、重启 MySQL
在 phpstudy 中 重启 MySQL
或 CMD:
net stop MySQL
net start MySQL
八、再次确认端口监听
netstat -ano | findstr 3306
确认:
0.0.0.0:3306 LISTENING
九、远程连接测试
连接信息:
IP: 服务器IP
Port: 3306
User: root
Password: 你的密码
十、常见问题
1. 1130 Host not allowed
说明没有 % 用户权限。
2. Can't connect to MySQL server
通常是:
- 3306 未开放
- MySQL 未监听
- bind-address 限制
3. Access denied
密码错误或权限不足。
最终正确状态
mysql.user
root | %
root | localhost
netstat
0.0.0.0:3306 LISTENING
Windows 防火墙
3306 TCP 已放行