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

 更新时间:2018年04月25日 10:14:00   作者:如是说  
这篇文章主要给大家介绍了关于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)

思路

  • 网络问题,更换网络之后重启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

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

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 ufw
sudo ufw enable
sudo ufw default deny

参考文章:https://www.jb51.net/article/138876.htm

总结

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

相关文章

  • linux抵御DDOS攻击 通过iptables限制TCP连接和频率

    linux抵御DDOS攻击 通过iptables限制TCP连接和频率

    这篇文章主要介绍了linux抵御DDOS攻击 通过iptables限制TCP连接和频率,需要的朋友可以参考下
    2016-05-05
  • Linux服务器磁盘空间清理方法汇总

    Linux服务器磁盘空间清理方法汇总

    在长时间运行过程中,Linux服务器上的磁盘空间可能会被各种文件和目录占用,导致磁盘空间不足,所以我们定期清理磁盘空间是非常必要的,本文将介绍一些常见的Linux服务器磁盘空间清理方法,需要的朋友可以参考下
    2024-04-04
  • 查看Linux OS内核与版本的几种命令分享

    查看Linux OS内核与版本的几种命令分享

    文章总结了四种在Linux操作系统中查看内核和版本的方法,并强调了个人经验的价值,鼓励大家参考和使用
    2024-11-11
  • CentOS系统下Apache配置多域名或多端口映射的方法

    CentOS系统下Apache配置多域名或多端口映射的方法

    我们大多情况是一台服务器一个IP,这样配置起来很简单,但是如何想多域名多端口映射的话就没那么简单了,下面这篇文章主要介绍了CentOS系统下Apache配置多域名或多端口映射的方法,需要的朋友可以参考学习,下面来一起看看吧。
    2016-12-12
  • Linux多块硬盘如何挂载到同一目录

    Linux多块硬盘如何挂载到同一目录

    文章介绍了如何使用LVM(逻辑卷管理)将多块硬盘合并为一个逻辑卷,并详细描述了操作流程,包括创建物理卷、卷组和逻辑卷,以及格式化和挂载逻辑卷
    2025-02-02
  • Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案

    Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案

    今天小编就为大家分享一篇关于Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Linux搭建Mysql主从同步的教程

    Linux搭建Mysql主从同步的教程

    这篇文章主要介绍了Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Linux 下安装pip包的方法

    Linux 下安装pip包的方法

    这篇文章主要介绍了Linux 下安装pip包的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • linux查找日志cat和grep方式

    linux查找日志cat和grep方式

    在Linux系统中,我们常常需要查询日志文件中的特定信息,这时候掌握一些关键字查询技巧就显得非常重要,例如,要查询关键字前后30行,可以使用grep命令的'-C'选项,若要查询两个关键字同时出现的情况,可以将grep命令连续使用,对于压缩后的文件
    2024-10-10
  • Windows 10利用虚拟机安装Linux图文教程

    Windows 10利用虚拟机安装Linux图文教程

    这篇文章主要为大家详细介绍了Windows 10利用虚拟机安装Linux的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论