解决Azure上Bitnami MySQL远程连接失败(Error 2003)问题
你已经做了不少基础排查工作,咱们从Azure环境和Bitnami特有的配置细节入手,一步步定位问题:
检查Azure网络安全组(NSG)入站规则
这是Azure VM远程访问最容易忽略的点:登录Azure门户,找到你的MySQL VM,进入「网络」选项卡,查看入站端口规则是否添加了允许TCP 3306端口的规则。建议先设置源为你的远程主机IP(更安全),测试通过后再按需调整。如果没有这条规则,远程请求会直接被Azure拦截。确保MySQL配置修改生效
你修改了my.cnf中的bind-address为0.0.0.0后,必须用Bitnami专用的脚本重启MySQL服务,而不是普通的systemd命令:sudo /opt/bitnami/ctlscript.sh restart mysql重启后执行以下命令确认监听地址:
netstat -tlnp | grep 3306输出如果显示
0.0.0.0:3306才说明配置生效,要是还是127.0.0.1,那说明配置没被正确加载(可能my.cnf路径不对,Bitnami的MySQL有时会读取/opt/bitnami/mysql/conf/my.cnf,你可以检查下实际加载的配置文件路径)。验证远程授权权限是否生效
你执行了授权命令后,别忘了执行FLUSH PRIVILEGES;让权限立即生效。另外,在本地登录MySQL后,执行以下命令确认root用户的主机权限:SELECT user, host FROM mysql.user;要确保存在
root@'%'这条记录,并且密码和你远程连接时输入的完全一致(注意大小写和特殊字符)。Bitnami默认的MySQL可能对密码复杂度有要求,如果你之前的密码不符合规则,授权可能没成功。检查VM本地防火墙
Bitnami的Ubuntu/Debian VM默认启用了ufw防火墙,即使Azure NSG开了端口,本地防火墙也可能拦截请求。执行以下命令查看状态:sudo ufw status如果没有允许3306的规则,添加并重新加载:
sudo ufw allow 3306/tcp sudo ufw reload测试网络连通性
在远程主机上用工具测试端口是否可达:# 用telnet测试 telnet xxx.xxx.xx.xx 3306 # 或者用nc(更直观) nc -zv xxx.xxx.xx.xx 3306如果显示连接失败,说明问题在网络层面(NSG或本地防火墙);如果能连通,再回到MySQL的权限和配置问题。
移除skip-grant-tables配置
你之前添加的skip-grant-tables会跳过MySQL的权限验证,可能导致后续的授权设置不生效。建议先移除这个配置,重启MySQL服务,再用正常的授权用户尝试远程连接。查看MySQL错误日志
错误日志能提供最直接的线索,Bitnami的MySQL错误日志路径一般是:/opt/bitnami/mysql/data/$(hostname).err查看日志中是否有类似
Access denied for user 'root'@'xxx.xxx.xx.xx'或者Connection refused的信息,根据日志提示进一步排查。
内容的提问来源于stack exchange,提问作者Karthi

