为了账号安全,请及时绑定邮箱和手机立即绑定

Linux下解决无法远程连接数据库问题

标签:
Linux

起因

今天在ubuntu16.04环境下通过mysql workbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教。

 

问题

通过workbench输入密码访问时报这个错:

Your connection attempt failed for user 'root' from your host to server at 118.89.153.162:3306:   Access denied for user 'root'@'118.89.153.162' (using password: YES)

 

思路

  1. 网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。

  2. 密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。

  3. 远程mysql没有访问权限,一般有两种方法:改表法授权法   :

 

            授权法:

            第一步:尝试打开/etc/mysql/my.cnf配置文件,若文件不存在或者内容为空,则打开下面的文件路径:

sudo vim /etc/mysql/my.cnf  
//或:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

            第二步:在文件中查找下面一行,如果该行前没有加#,可在该行前添加#进行注释,保存退出。

bind-address = 127.0.0.1
    

           改表法:

复制代码

mysql>use mysql;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION   //赋予任何主机访问以及修改所有数据的权限//例如,你想root用户使用root从任何主机连接到mysql服务器的话。//GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;//如果你想允许用户root从ip为192.168.1.124的主机连接到mysql服务器,并使用123456作为密码//GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.124'IDENTIFIED BY '123456' WITH GRANT OPTION;mysql>flush privileges //权限刷新,使修改立即生效sudo /etc/init.d/mysql restart //或: service mysql restart  重启mysql服务

复制代码

           

   两种方法我尝试了一下,错误类型变成了:

Can't connect to MySQL server on ...

看到这个错误我想到了远程服务器防火墙的原因,于是我有了下面的思路:

 

        4. 远程ubuntu服务器的防火墙原因导致无法本地访问远程的3306端口

sudo ufw disable //关闭防火墙,该命令需在root权限下执行,慎用

再次通过workbench连接远程mysql,连接成功。

 

原因

我的本地无法连接远程是因为远程ubuntu服务器防火墙默认禁止外部访问3306端口。

 

做法

sudo ufw enable  //开启防火墙sudo ufw allow 3306  //允许外部访问3306端口

 

总结

              1. 一般的无法连接远程mysql问题是由上面四个愿意导致的,这里不做赘述。

              2. 在遇到一个问题时首先要做的不是立刻找做法解决这个问题,而应该是思考为什么会出现这个问题,产生这个问题的原因,做到对症下药。

              3. 自己还有很多不足,戒骄戒躁才能进步。

 

附赠

        Ubuntu常用ufw防火墙命令

复制代码

//安装方法
sudo apt-get install ufw
   
//启用
sudo ufw enable
sudo ufw default deny //开启了防火墙并随系统启动同时关闭所有外部对本机的访问,本机访问外部正常。//关闭sudo ufw disable//查看防火墙状态sudo ufw status//开启/禁用相应端口或服务举例sudo ufw allow 3306 //允许外部访问3306端口sudo ufw delete allow 3306 禁止外部访问3306端口 sudo ufw allow from 118.89.153.162 //允许此IP访问所有的本机端口sudo ufw deny smtp  //禁止外部访问smtp服务sudo ufw delete allow smtp //删除上面建立的某条规则sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 //要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口//推荐使用sudo apt-get install ufwsudo ufw enablesudo ufw default deny参考博客:https://www.cnblogs.com/kluan/p/5993767.html

原文出处

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消