远程连接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了。

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

posted @ 2020-06-11 10:27  Marvin-wen  阅读(495)  评论(0编辑  收藏  举报