网站首页 > 技术文章 正文
这是一个欲哭无泪的故事,故事从开始到结束花了我整整2个小时。
现在开始进入这个小故事,请备好垃圾桶。
下面这张图,就是我的网站前两天的状态。
image.png
这个是我的前端刷题网站,后台数据是mysql,前天深夜我玩着玩着突然给玩坏了,数据链接失败,navicat也不好使了。
所以就有了上面那副图,你也绝对想不到我是怎样解决这个问题的。
这个刷题网站,虽然没啥流量,但也每天稳定200uv,这一下子打不开了,可把我急坏了,没事儿真不能瞎折腾。
image.png
先看日志
服务器在自己手里,肯定第一反应就是上服务器看下日志。
image.png
从错误上来看是数据库查询没返回数据,导致ssr服务端渲染异常,猜测是数据库链接问题。
难道mysql服务停止了?
登录mysql
使用命令行登录msyql,来看下数据库是否正常.
mysql -u root -p
结果能正常登录。
image.png
难道数据库丢了?
命令行扫下数据库。
show dagabases;
数据库还在!
image.png
再看下表的数据是否正常。
use db; //切到具体数据库
show tables; //查看所有的表
select * from news limit 0,10; //查看数据前10条数据
结果都正常。
image.png
看进程
验证下mysql进程和端口是否正常!没办法的办法。
ps -ef|grep mysqld //查看mysql进程
进程好像也没啥问题!没太仔细研究。
image.png
再看下mysql监听的ip和端口是否正常。
netstat -anpt
监听地址如果是:::3306或者是0.0.0.0:3306,表示监听所有IP地址,这监听状态是正常。若出现127.0.0.0:3306,说明监听的本地地址,需要在mysql配置文件中将bind-address选项设置为bind-address = 0.0.0.0,重启mysql。
最后的结果让我失望了,一切正常。
image.png
本地调试
以上步骤后,可以确定数据库和数据都没问题。
所以最快的方法就是本地调试,看抛出的异常信息。
果然是数据库链接失败!
image.png
其实不是链接失败,而是被拒绝。
Error: connect ECONNREFUSED
什么情况下才会出现被拒绝呢?被拒绝是什么操作呢?
然后开始了漫长的百度和谷歌。
image.png
看了几篇文章后,归纳起来大概有以下几种可能。
- mysql 通信端口变更了
- 服务器有安全限制,需要打开对外的访问
- root账号权限不足
确认mysql端口和账号权限
上面第2种情况,直接排除,阿里云早就开了。
确认mysql通信端口是不是3306!
//查看mysql端口号
show global variables like 'port';
端口也确实没问题!!
image.png
查看root账号权限,其实很早之前就配过,还是要确认下。
使用以下命令查看!
use mysql; //切换数据库
select host,user from user;
账号权限也ok,上面host为 % 就可,表示任何客户端都可以链接。不过,突然意识到这样的设置有点风险。
image.png
竟然到了黔驴技穷的地步(其实是经常性的),当然还有一个万能的办法,就是重启服务器。。。。
重启msyql!
service mysqld stop //停止mysql
service mysqld start //启动
service mysqld restart //重启
问题依然存在!
抓包
感觉所有招式都用完了,依然没有头绪。
最后只能抓包了。
在服务器上输入抓包命令:
tcpdump port 3306
开始监听:
image.png
发起数据库链接:
image.png
好家伙,确实存在异常, tcp 第一次握手就失败了。
正常是这样的,有来有往。
image.png
我到底干了什么?
经过上面的种种操作,可以确定数据库没问题,数据库进程没问题,问题在于服务器的配置出问题了。
也就是端口访问被拦截。
思考了片刻,灵光乍现,前几天是不是玩了下宝塔,这货是不是有安全限制?
果然!
image.png
最后我深深地给自己鞠了一躬!我服你!
最后
最后为了说服自己,与自己和解,原谅我这波操作,虽然浪费了时间,但我真的学到了知识。
所以把用到的命令整理给大家,希望以后你不会用到!
1. mysql -u root -p // 登录mysql, 输入后直接回车才能输入密码
2. show dagabases; //查看有几个数据
3. use db; //切到具体数据库
show tables; //查看所有的表
select * from news limit 0,10; //忽略吧,大家都知道
4. ps -ef|grep mysqld //查看mysql进程
5. netstat -anpt //查看mysql 监听的端口和ip是否正常
6. show global variables like 'port'; //查看mysql端口号 ,需要先登录msyql
use mysql; //切换数据库,先登录mysql
7. select host,user from user; // 查看root账号权限,先登录mysql
8. service mysqld stop //停止mysql
service mysqld start //启动
service mysqld restart //重启
9. tcpdump port 3306 //端口抓包,好用的很
参考资料:
https://jingyan.baidu.com/article/380abd0a3aef431d90192c33.html https://www.cnblogs.com/pyng/p/9699068.html
- 上一篇: 刷题小程序怎么做?答题小程序开发制作流程
- 下一篇: 作为前端开发者,你都经历过怎样的面试?
猜你喜欢
- 2024-11-22 【每日一题】数量刷题开始啦
- 2024-11-22 前端面试第二天
- 2024-11-22 前端面试总结
- 2024-11-22 「offerMe——刷题必备」java如何实现开根号的运算
- 2024-11-22 耗时7天我终于把LeetCode刷通关:数组十七连,真是不简单
- 2024-11-22 前端小姐姐的大厂面试过程复盘(微信/阿里/头条,附答案篇)
- 2024-11-22 大厂面试必刷题之“接雨水”
- 2024-11-22 刷 leetcode,进字节、阿里等一线大厂,刷题之前一定先打好基础
- 2024-11-22 作为前端开发者,你都经历过怎样的面试?
- 2024-11-22 刷题小程序怎么做?答题小程序开发制作流程
你 发表评论:
欢迎- 07-10Oracle 与 Google Cloud 携手大幅扩展多云服务
- 07-10分享收藏的 oracle 11.2.0.4各平台的下载地址
- 07-10Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 07-10Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 07-10Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 07-10Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 07-10NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 07-10对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 602℃几个Oracle空值处理函数 oracle处理null值的函数
- 594℃Oracle分析函数之Lag和Lead()使用
- 582℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 579℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 574℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 567℃【数据统计分析】详解Oracle分组函数之CUBE
- 554℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 548℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- Oracle 与 Google Cloud 携手大幅扩展多云服务
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
- Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- Oracle Database@Azure 推进到南美等新区域并增加了新服务
- Oracle宣布推出 Oracle Database@AWS 的有限预览版
- Oracle与Nextcloud合作,推出主权云上的安全协作平台
- NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 解读丨《归档文件整理规则》— 电子文件元数据存储
- Data Guard跳归档恢复的实践(dataguard failover)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)