Linux中无法远程连接数据库问题的解决方法
时间:2022-07-27
本文章向大家介绍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.zalou.cn/article/138876.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn的支持。
- MySQL root用户登录的几个小问题(r12笔记第67天)
- Java实现生产者消费者的两种方式(r12笔记第66天)
- Golang语言的函数调用信息
- mysqldump的一点使用总结(r12笔记第81天)
- 转-Golang语言Interface漫谈
- WordPress导航菜单图标字体插件font awesome 4 menus纯代码版
- Oracle 12c远程克隆PDB的问题及修复(r12笔记第78天)
- Oracle表中含有255列以上时需要注意的(r12笔记第77天)
- Golang语言--资源自动回收技术
- Oracle 12.2中的一个参数说明(r12笔记第76天)
- Golang语言社区--【游戏服务器知识】多线程并发
- 用100行Nodejs代码写微博爬虫
- MySQL无法创建表的问题分析(r12笔记第73天)
- Golang语言社区--【H5游戏开发基础知识】JavaScript 用法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Rust 往事 | Loop 和 While True 之争
- 数字成像系统概述
- 在SAP C4C里使用Restful服务消费SAP S/4HANA的标准功能
- SAP Spartacus里的StorefrontConfig静态类型
- SAP Spartacus B2cStorefrontModule.withConfig的实现
- SAP Spartacus 页面元数据
- leetcode-easy-array-合并两个有序数组
- django配置mysql数据库
- Spring整合WebSocket
- Linux 命令(138)—— nc 命令
- # 全网最细 | 21张图带你领略集合的线程不安全
- grafana踩坑记录
- TensorFlow函数:tf.image.crop_to_bounding_box
- tf.newaxis
- tf.random_normal_initializer:TensorFlow初始化器