首页 > 数据库技术 > 详细

远程连接MySQL失败

时间:2020-06-11 11:04:24      阅读:57      评论:0      收藏:0      [点我收藏+]

前言

我的云服务器是华为云,系统版本是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了。

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

远程连接MySQL失败

原文:https://www.cnblogs.com/marvin-wen/p/13091704.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!