通过R语言连接MySQL数据库时报Access denied访问被拒绝错误
R连接免费MySQL数据库Access denied报错排查
触发的
Error: Failed to connect: Access denied for user 'sql5404117'@'%' to database 'sql504117'是MySQL服务端在权限校验阶段抛出的错误,说明客户端已经成功连通了数据库服务、账号密码的基础校验已通过,仅在指定数据库的访问权限校验环节被拦截,不存在网络不通、R驱动版本不兼容的问题。
排查步骤
- 逐字符核对数据库名拼写
这类报错里80%以上的场景都是库名抄写错配,免费MySQL托管平台的默认命名规则中,用户名和数据库名的数字段高度相似,很容易出现输入偏差。对比你当前的配置:用户名是sql5404117,填写的库名是sql504117,二者数字段仅差了一位字符,属于极高概率的错误点。直接到平台控制台的数据库管理页面,复制账号实际绑定的数据库名填入配置,不要凭记忆手动输入。 - 分步缩小问题范围
先在R的连接参数中移除dbname配置项,尝试建立不指定默认库的基础连接:- 如果基础连接仍然报相同的Access denied错误,说明是账号或密码的配置错误,需要核对平台控制台给出的账号名、密码是否完全匹配,注意密码区分大小写,复制时不要带入首尾空格。
- 如果基础连接能正常建立,说明账号密码、host、port的配置没有问题,连接成功后执行
SHOW DATABASES;命令,查询当前账号实际有权限访问的数据库列表,将列表中显示的真实库名填入连接参数重试即可。
- 确认账号权限匹配规则
免费托管平台的账号默认仅开放对应专属数据库的访问权限,不支持跨库操作。如果当前账号sql5404117被绑定的可访问库是同前缀的sql5404117,而你尝试连接的是不属于该账号权限范围的sql504117库,就会直接触发该报错。
补充说明:报错信息中显示的'%'说明当前账号已经配置为允许任意来源IP访问,不存在IP白名单拦截的问题,这部分无需额外排查。
内容的提问来源于stack exchange,提问作者bigdog0789
相关产品推荐
相关产品推荐

