Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 4239|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-15 13:37:05 | 显示全部楼层 |阅读模式

    起因

    今天在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 ufw
    sudo ufw enable
    sudo ufw default deny 
    
    参考博客:https://www.cnblogs.com/kluan/p/5993767.html

     

     

     

     

     

      

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-5 15:49 , Processed in 0.054521 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表