MySQL访问权限授权问题
遇到错误 1130 - Host ‘192.168.56.1’ is not allowed to connect,说明 MySQL 服务器拒绝了来自 IP 地址 192.168.56.1 的访问请求。以下是完整的解决方案:
问题原因
MySQL 默认只允许 本地连接(localhost),如果尝试从其他主机或 IP(如虚拟机、远程服务器)连接,需手动授权。
解决方案
1. 登录 MySQL 并修改权限
需在 MySQL 服务器本地执行以下步骤:
-  以 root 身份登录 MySQL(在服务器本机操作): mysql -u root -p
-  进入 mysql数据库:USE mysql;
-  查看当前 root 用户的权限: SELECT Host, User FROM user WHERE User = 'root'; - 如果结果中 Host列只有localhost,则需要添加新权限。
 
- 如果结果中 
-  允许指定 IP 访问(例如 192.168.56.1):-- 方法1:直接授权(MySQL 5.7+) CREATE USER 'root'@'192.168.56.1' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.56.1' WITH GRANT OPTION;-- 方法2:更新 user 表(通用) UPDATE user SET Host = '192.168.56.1' WHERE User = 'root' AND Host = 'localhost';
-  刷新权限: FLUSH PRIVILEGES; EXIT;
2. 检查 MySQL 绑定地址
确保 MySQL 监听所有网络接口或指定 IP:
- 打开 MySQL 配置文件 my.ini(默认路径:C:\ProgramData\MySQL\MySQL Server X.X\my.ini)。
- 找到 [mysqld]部分,修改或添加:bind-address = 0.0.0.0 # 允许所有 IP 连接(或指定 192.168.56.1)
- 重启 MySQL 服务:net stop MySQL net start MySQL
3. 测试连接
从客户端机器(IP 为 192.168.56.1)执行:
mysql -u root -p -h <MySQL服务器IP> -P 3306
其他可能性
| 场景 | 解决方法 | 
|---|---|
| 授权所有 IP 访问 | 将 Host改为%(不推荐,存在安全风险) | 
| 防火墙拦截 | 开放服务器 3306 端口(参考 Windows 防火墙放行端口教程) | 
| 使用 SSH 或 VPN 隧道 | 通过加密通道连接 MySQL(更安全) | 
安全建议
- 避免使用 %允许所有 IP 访问。
- 建议通过 SSH 隧道 或 VPN 连接 MySQL。
- 使用非 root 用户并限制权限(如只读或指定数据库)。
如果仍无法解决,请提供以下信息:
- SELECT Host, User FROM mysql.user;的输出。
- 服务器和客户端的 IP 配置。
- 是否跨虚拟机或物理网络连接(如 VirtualBox、VMware)。
