zoukankan      html  css  js  c++  java
  • 阿里 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

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

  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/xiaommvik/p/7818804.html
Copyright © 2011-2022 走看看