• 阿里 Linux服务器*无法连接MySQL解决方法


    我的服务器买的是阿里云ECS linux系统。为了更好的操作数据库,我希望可以用navicat for mysql管理我的数据库。

    当我按照正常的模式去链接mysql的时候,

    报错提示:

    1. 2003- Can't connect MySQL Server on 'x.x.x.x'(10038)

    于是,通过查找资料,我找到了解决的方法,其实是阿里云服务器为了安全默认不允许从外面链接Mysql数据库。

    下面是解决整理的三种解决的方法:

    第一种、监听地址配置错误解决方法:

    检查mysql服务端口(默认为3306)是否正常监听在127.0.0.1上,如果监听在127.0.0.1上那只允许服务器本身访问的,其他地址是访问不了的,可以通过下面方法来确定端口监听以及修改监听地址;

    1. #netstat -nal |grep 3306 //查看3306端口监听情况,如果监听端口在127.0.0.1上,需进行更正。

    1-1.png

    1. #find / -name my.cnf     //查找MySQL配置文件路径

    1-2.png

    1. #vim /etc/my.cnf         //编辑配置文件,将bind-address = 127.0.0.1参数,更改为bind-address = 0.0.0.0 或注释此行。

    1-3.png

    重启mysql服务,问题解决。

    第二种、被防火墙阻拦解决方法:

    如果排查mysql服务监听在0.0.0.0地址3306端口上,需检查防火墙设置。如果是被防火墙拦截,需开放数据库服务端口。

    注意:此处有坑。

    第一步:我们可以关闭防火墙,看看外部可不可以链接。

    1. service iptables stop

    第二步:当关闭防火墙可以访问的时候,问题就出现在我们的端口上。打开端口配置文件,仔细看看是不是3306端口。并确认状态,不晓得怎么会默认变成drop,改成ACCEPT即可

    1. vi /etc/sysconfig/iptables

    下面接着来:

    1. iptables -L
    2. iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    3. 记得重启防火墙 
      1. service iptables restart

    2-1.png

    第三种、USER表配置错误解决方法:

    监听地址和防火墙检查无误,需进入mysql数据库内部,检查USER表是否没有放开远程访问。如果没有开启远程访问,开启即可。

    1. mysql> use mysql;   //进入到mysql库中

    3-1.png

    1. mysql> update user set host = '%' where user = 'root';  //更改USER这张表中的访问地址为%
    2. mysql> select host, user from user;                     //查看是否更改成功

    3-2.png

    配置完成之后记得重启服务器。

  • 相关阅读:
    PAT(乙级)1007
    PAT(乙级)1006
    PAT(乙级)1005
    PAT(乙级)1004
    C算法实现:将字符串中的数字返回为整型数
    PAT(乙级)1002
    PAT(乙级)1001
    NOI接水问题
    【BZOJ】【2756】【SCOI2012】奇怪的游戏
    【BZOJ】【2631】Tree
  • 原文地址:https://www.cnblogs.com/xiaommvik/p/7818804.html
Copyright © 2020-2023  润新知