访问数据库报错
这个错误非常明确:MySQL 数据库拒绝了来自你当前 IP 地址的连接请求。
❌ 错误原因分析
报错信息:Host '60.208.111.212' is not allowed to connect to this MySQL server
含义:你的电脑公网 IP 是 60.208.111.212,你试图连接阿里云服务器(47.105.39.170)上的 MySQL。但是,MySQL 数据库内部的权限表(mysql.user)中,没有授权 60.208.111.212 这个 IP 使用 root 用户进行连接。
默认行为:为了安全,MySQL 默认通常只允许 localhost (127.0.0.1) 连接,或者只允许特定的 IP 连接。
✅ 解决方案
你有两种解决思路,推荐方案一(最安全),如果你只是临时调试可以用方案二。
方案一:添加特定 IP 白名单(推荐,安全)
只允许你当前的电脑 IP (60.208.111.212) 连接数据库。
登录到阿里云服务器终端(使用 SSH 工具如 Xshell, Putty 或阿里云网页终端)。
登录 MySQL(在服务器本地登录不需要密码验证 IP):
mysql -u root -p
# 输入你的数据库密码
执行 SQL 命令授权:
注意:请将 '你的数据库密码' 替换为你实际的 root 密码。
如果是 MySQL 8.0+ (若依 v3.x 通常用这个):
-- 1. 创建/修改用户并授权
CREATE USER 'root'@'60.208.111.212' IDENTIFIED BY '你的数据库密码';
GRANT ALL PRIVILEGES ON. TO 'root'@'60.208.111.212' WITH GRANT OPTION;
-- 2. 刷新权限
FLUSH PRIVILEGES;
-- 3. 退出
EXIT;
(如果提示用户已存在,先执行 DROP USER 'root'@'60.208.111.212'; 再执行上面的创建命令)
如果是 MySQL 5.7:
GRANT ALL PRIVILEGES ON. TO 'root'@'60.208.111.212' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
测试:回到你的客户端工具,再次点击连接,应该就能成功了。
方案二:允许所有 IP 连接(方便但不安全)
允许任何 IP 地址使用 root 用户连接数据库。生产环境严禁这样做! 仅用于开发测试。
登录服务器 MySQL:
mysql -u root -p
执行 SQL 命令:
MySQL 8.0+:
CREATE USER 'root'@'%' IDENTIFIED BY '你的数据库密码';
GRANT ALL PRIVILEGES ON. TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
(如果 root@% 已存在,先 DROP 再 CREATE,或者直接修改密码)
或者修改现有 root 用户(更简单的方法):
USE mysql;
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;
EXIT;
(注:MySQL 8.0 中直接改 host 可能会因为认证插件问题导致无法连接,建议用上面的 CREATE USER 方法)
⚠️ 重要补充检查:阿里云安全组
即使你在 MySQL 里授权了 IP,如果阿里云控制台的安全组没放行 3306 端口,你也连不上(通常会报 "Connection timed out" 而不是 "Host not allowed",但检查一下更保险)。
登录 阿里云控制台。
进入 云服务器 ECS -> 实例。
点击你的实例 ID,找到 安全组 标签页,点击配置规则。
在 入方向 添加规则:
端口范围:3306/3306
授权对象:
如果用了方案一,填你的 IP:60.208.111.212/32
如果用了方案二,填:0.0.0.0/0 (允许全网)
协议:TCP
策略:允许
总结
你现在的报错纯粹是 MySQL 用户权限限制。
请执行 方案一 中的 SQL 语句,将你的 IP 60.208.111.212 加入白名单即可解决。
浙公网安备 33010602011771号