zoukankan      html  css  js  c++  java
  • 远程连接MySQL失败

    前言

    我的云服务器是华为云,系统版本是Ubuntu 18.04,MySQL版本是5.7。尝试了好多种方法连接MySQL都失败,翻了好多博客,又去了官方帮助文档找答案,最后终于给弄好,总结了以下解决MySQL连接失败的原因及解决方法。

    正文

    一、没有开启MySQL的远程登录账号

    若想myuser使用mypassword从任何主机连接到mysql服务器(自己替换myuser和mypassword):

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

    若想仅允许用户myuser从ip为xx.xx.xx.xx 的主机连接到mysql服务器,并使用mypassword作为密码:

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'xx.xx.xx.xx' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

    最后执行 flush privileges 刷新权限。

    二、配置文件限制远程访问

    使用 ss -tlnp 命令查看网络接口开启状态,如图:

    如果3306前面是127.0.0.1,则要修改配置文件mysql.cnf(有些系统是my.cnf):

    我的mysql.cnf是这样的内容,于是又去找上面两个文件夹,最后是在/etc/mysql/mysql.conf.d/中找到mysqld.cnf,打开文件,注释这句:

    bind-address = 127.0.0.1

    然后重启mysql。

    三、防火墙限制外部访问MySQL接口

    使用 sudo iptables -L -n 查看iptables设置:

    发现服务器没有开放3306端口,于是要添加防火墙例外端口:

    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

    重新加载防火墙配置:

    ufw reload

    有些系统是用firewall-cmd --reload这个命令。

    再次使用 sudo iptables -L -n 命令应该可以看到3306了。

    排除上面几点基本都能连接了。

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/marvin-wen/p/13091704.html
Copyright © 2011-2022 走看看