开发者社区 问答 正文

ECS Linux 系统如何授权 MySQL 外网访问



问题现象



MySQL 无法通过外网连接。

问题原因



在 MySQL 的 bin 目录下执行:
登陆到数据 mysql -uroot -p密码 use mysql;select host,user,password from user;
可以看到 user 为 root,host 为 localhost 的话,说明 MySQL 只允许本机连接,那么外网,本地软件客户端就无法连接了。

解决方案



执行如下命令: update user set host='%' where user ='root';flush privileges;
查看是否修改正常:

对于设置其他用户远程连接的方法: GRANT ALL PRIVILEGES ON 数据库名.* TO 账户@"%" IDENTIFIED BY "密码";flush privileges;
可以测试外网连接 MySQL 服务器。

如果问题还未能解决,您可以到阿里云社区进行 免费咨询,或联系云市场商家 寻求帮助

展开
收起
boxti 2017-10-23 09:52:32 1901 分享
分享
版权
举报
阿里云 AI 助理回答

当您遇到MySQL无法通过外网连接的问题时,可以按照以下步骤进行解决:

  1. 检查并修改用户权限

    • 首先,登录到您的ECS实例,通过SSH进入命令行界面。
    • 执行如下SQL命令以允许root用户从任意IP地址连接:
      mysql -uroot -p密码
      use mysql;
      update user set host='%' where user ='root';
      flush privileges;
      
    • 确认修改是否生效,再次执行查询确认host字段已更新为%
  2. 为其他用户设置远程访问权限(如果需要):

    • 如果您希望为非root用户设置远程访问,使用如下命令:
      GRANT ALL PRIVILEGES ON 数据库名.* TO '新用户名'@'%' IDENTIFIED BY '新用户密码';
      flush privileges;
      
  3. 检查网络配置与安全组规则

    • 确保ECS实例的安全组规则已经开放了MySQL的默认端口3306,允许来自外网的入站连接。如果不确定,您可以临时添加一条规则允许所有IP(0.0.0.0/0)访问测试,但请记得之后根据实际情况调整为更安全的策略。
    • 检查服务器的防火墙设置,确保没有阻止3306端口的流量。
  4. 验证连接

    • 使用外网环境下的MySQL客户端软件或命令行尝试连接MySQL服务器,确保使用正确的公网IP地址、端口号、用户名和密码。
  5. 进一步排查

    • 如果上述步骤后问题仍未解决,查看MySQL的日志文件(如/var/log/mysql/error.log),寻找可能的错误信息或警告。
    • 确认ECS实例与数据库服务状态正常,无资源不足或系统限制导致的问题。

如果经过这些步骤问题依旧存在,建议在阿里云社区寻求帮助或联系云市场上的专业服务商进行深入诊断和解决。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答