起因

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

问题

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

Your connection attempt failed for user 'root' from your host to server at 118.89.153.162::   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端口

总结

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端口
sudo ufw delete allow 禁止外部访问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/ to 192.168.0.1 port //要拒绝所有的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

Linux下解决无法远程连接数据库问题的更多相关文章

  1. Linux下的网络远程安装

    Linux下的网络远程安装 1.用RHEL6.5光盘安装第一台服务器 2.在第一台服务器上配置YUM服务器 先创建一个挂载 #mount #umount /dev/cdrom #mkdir /mnt/ ...

  2. Linux下解决permission denied问题

    由于权限问题,在linux下启动tomcat出现权限permission denied 提示解决方法如下: 1.cd 进入tomcat/bin目录 2.运行下面命令 sudo chmod 777 st ...

  3. Linux下利用ssh远程文件传输 传输命令 scp

    在linux下一般用scp这个命令来通过ssh传输文件. 一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进 ...

  4. Linux下mysql实现远程连接

    首先明白一点并不是mysql禁止远程连接,而是MYSQL的账号禁止远程连接.可能觉得我有点咬文嚼字了,不过我感觉分清这点还是很重要的.默认情况下,所有账号都是禁止远程连接的.在安装MYSQL的时候,在 ...

  5. linux下解决git clone太慢

    此教程同样也适用与vscode下载太慢的问题 git和vscode会自动使用http_proxy,https_proxy环境变量的代理,所以我们只需要设置这个环境变量即可 前提 需要一个可用的代理,这 ...

  6. 解决ubuntu下mysql不能远程连接数据库的问题【转】

    Ubuntu10.04上自带的MySQL,执行了root@ubuntu:~#sudo apt-get install mysql安装完mysql-server 启动mysqlroot@ubuntu:~ ...

  7. linux 下解决mysql root 权限无法远程连接问题

    问题描述:MySQL数据库安装成功后,在服务器本地可以连接成功,但是使用工具navicat无法进行远程连接,如图: 原因:MySQL默认只允许root帐户在本地登录,如果要在其它机器上连接mysql, ...

  8. (总结)CentOS Linux下VNC Server远程桌面配置详解

    一.安装相应桌面环境与vnc服务端和客户端: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME桌面环 ...

  9. CentOS Linux下VNC Server远程桌面配置详解

    http://www.ha97.com/4634.html PS:偶以前基本不用Linux的远程图形桌面,前几天有开发的同事配置CentOS的vnc有问题,找我解决,就顺便记录总结一下,这个总结是比较 ...

随机推荐

  1. java 细说String

    String类内部用一个字符数组表示字符串,实例变量定义为: private final char value[]; String有两个构造方法,可以根据char数组创建String public S ...

  2. 阿里云API网关(11)外网访问 阿里云API网关内定义的API步骤:

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  3. oracle获取表字段属性

    select b.COMMENTS,a.COLUMN_NAME,a.DATA_TYPE,a.DATA_LENGTH, a.DATA_PRECISION,a.DATA_SCALE,a.NULLABLE, ...

  4. Java面向对象之构造函数 入门实例

    一.基础概念 1.什么时候定义构造函数: 当对象创建时,需要对象必须具备的内容,通过构造函数完成. 2.一般函数和构造函数的区别: 定义上:构造函数只为对象的初始化,只执行一次.一般函数定义对象应该具 ...

  5. 关于ZK框架的onScroll事件的问题

    由于我现在所在的公司用到的zk框架,遇到了一个需求frozen on top. 简单来说就是滚动超过范围后,希望有一块东西停留在滚动窗口的顶部. 一.zk框架 查看了zk的8.x版本,发现组件的支持的 ...

  6. JavaScript 重点笔记

    JavaScript 重点笔记 ## 数组 // 必须掌握 - arr.length:获取数组元素的长度 - arr.splice(起始位置,长度):从数组中添加或删除元素. - arr.indexO ...

  7. 部署testlink报错,安装wampserver时提示丢失MSVCR110.dll

    安装wampserver时提示丢失MSVCR110.dll(在windows server上可用)对于32位系统,安装Wampserver 后启动的时候提示系统错误:MSVCR110.dll丢失.于是 ...

  8. 从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router

    写在前面: 什么是全家桶? 包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https ...

  9. Java动态代理模式浅析

    Java代理设计模式 - 静态代理 Java中的动态代理 - 调用处理器 代理设计模式的UML图: 我将首先介绍Java中的各种代理实现方法 Java代理设计模式 - 静态代理 这个例子非常简单,只有 ...

  10. [LeetCode] Cherry Pickup 捡樱桃

    In a N x N grid representing a field of cherries, each cell is one of three possible integers. 0 mea ...