Linux服务器无法远程连接数据库问题的解决方法

发布时间:2022-05-21 09:52 来源:好主机 阅读:115 作者:好主机 栏目: 经验分享 欢迎投稿:712375056

这篇文章主要给大家介绍了关于 LINUX中无法远程连接 数据问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

起因

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

问题

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

?
1 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)

思路

  • 网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。
  • 密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。
  • 远程mysql没有访问权限,一般有两种方法:改表法和授权法   :

 授权法:

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

?
1 2 3 sudo vim /etc/mysql/my .cnf // 或: sudo vim /etc/mysql/mysql .conf.d /mysqld .cnf

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

?
1 bind-address = 127.0.0.1

改表法:

?
1 2 3 4 5 6 7 8 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服务

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

?
1 Can't connect to MySQL server on ...

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

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

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

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

原因

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

做法

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

总结

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

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

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

附赠

Ubuntu常用ufw防火墙命令

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 // 安装方法 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 ufw sudo ufw enable sudo ufw default deny

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对主机吧的支持。

发布者:水桥丶帕露西

免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。