起因
今天在ubuntu16.04环境下通过mysql workbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教。
问题
通过workbench输入密码访问时报这个错:
思路
网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。
密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。
远程mysql没有访问权限,一般有两种方法: 改表法 和 授权法 :
授权法:
第一步:尝试打开 /etc/mysql/my.cnf 配置文件,若文件不存在或者内容为空,则打开下面的文件路径:
sudo vim /etc/mysql/my.cnf
//或:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
第二步:在文件中查找下面一行,如果该行前没有加 # ,可在该行前添加#进行注释,保存退出。
改表法:
两种方法我尝试了一下,错误类型变成了:
Can't connect to MySQL server on ...
看到这个错误我想到了远程服务器防火墙的原因,于是我有了下面的思路:
4. 远程ubuntu服务器的防火墙原因导致无法本地访问远程的 3306 端口
sudo ufw disable //关闭防火墙,该命令需在root权限下执行,慎用
再次通过workbench连接远程mysql,连接成功。
原因
我的本地无法连接远程是因为远程ubuntu服务器防火墙默认禁止外部访问3306端口。
做法
sudoufwenable//开启防火墙
sudoufwallow3306//允许外部访问3306端口
总结
1. 一般的无法连接远程mysql问题是由上面四个愿意导致的,这里不做赘述。
2. 在遇到一个问题时首先要做的不是立刻找做法解决这个问题,而应该是思考为什么会出现这个问题,产生这个问题的原因,做到对症下药。
3. 自己还有很多不足,戒骄戒躁才能进步。
附赠
Ubuntu常用 ufw防火墙命令
如果有任何疑问,欢迎添加qq群测试入门大神 755431660 共同学习~
领取专属 10元无门槛券
私享最新 技术干货