被逼无奈学了几个mysql命令,竟然有大用。

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 这是一个欲哭无泪得故事,故事从开始到结束花了我整整2个小时。现在开始进入这个小故事,请备好垃圾桶。

这是一个欲哭无泪得故事,故事从开始到结束花了我整整2个小时。

现在开始进入这个小故事,请备好垃圾桶。

下面这张图,就是我的网站前两天的状态。

02be6fc7b7b36f833e3b73c12349af03_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

这个是我的前端刷题网站,后台数据是mysql,前天深夜我玩着玩着突然给玩坏了,数据链接失败,navicat也不好使了。

所以就有了上面那副图,你也绝对想不到我是怎样解决这个问题的。

这个刷题网站,虽然没啥流量,但也每天稳定200uv,这一下子打不开了,可把我急坏了,没事儿真不能瞎折腾。

8cd508ab75f1c405696f119a0643e7c7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

先看日志

服务器在自己手里,肯定第一反应就是上服务器看下日志。

195a3e81563c226b6df62abb511d0136_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

从错误上来看是数据库查询没返回数据,导致ssr服务端渲染异常,猜测是数据库链接问题。

难道mysql服务停止了?

登录mysql

使用命令行登录msyql,来看下数据库是否正常.

mysql -u root -p

结果能正常登录。

03b0f7bb97966331047d2b49c7e96c46_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

难道数据库丢了?

命令行扫下数据库。

show dagabases;

数据库还在!

a7e4a367bcb2cbe36fa7403e598d3283_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

再看下表的数据是否正常。

use db; //切到具体数据库
show tables; //查看所有的表
select * from news limit 0,10; //查看数据前10条数据

结果都正常。

ee180bf93a02e9c66e796e71b317372f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

看进程

验证下mysql进程和端口是否正常!没办法的办法。

ps -ef|grep mysqld //查看mysql进程

进程好像也没啥问题!没太仔细研究。

afc99bdd005a05e2e61eca3afce1c062_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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。

最后的结果让我失望了,一切正常。

218f00037466fb98ab1a32e40c06182a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

本地调试

以上步骤后,可以确定数据库和数据都没问题。

所以最快的方法就是本地调试,看抛出的异常信息。

果然是数据库链接失败!

8814a3f27168891a88b4cb6a4d84eb67_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

其实不是链接失败,而是被拒绝。

Error: connect ECONNREFUSED

什么情况下才会出现被拒绝呢?被拒绝是什么个操作呢?

然后开始了漫长的百度和谷歌。

1a0d589129f0883afa9b609bbe0edb0c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

看了几篇文章后,归纳起来大概有以下几种可能。

  1. mysql 通信端口变更了
  2. 服务器有安全限制,需要打开对外的访问
  3. root账号权限不足

确认mysql端口和账号权限

上面第2种情况,直接排除,阿里云早就开了。

确认mysql通信端口是不是3306!

//查看mysql端口号 
show global variables like 'port';

端口也确实没问题!!

bfd03f681898220604f97c272bb46a7d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

查看root账号权限,其实很早之前就配过,还是要确认下。

使用以下命令查看!

use mysql; //切换数据库
select host,user from user;

账号权限也ok,上面host为%就可,表示任何客户端都可以链接。不过,突然意识到这样设置有点风险。

a0498626587df6f62aa401b47269a4e6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

竟然到了黔驴技穷的地步(其实是经常性的),当然还有一个万能的办法,重启服务器。。。。

重启msyql!

service mysqld stop //停止mysql
service mysqld start //启动
service mysqld restart //重启

问题依然存在!

抓包

感觉所有招式都用了,依然没有头绪。

最后只能抓包了。

在服务上输入抓包命令:

tcpdump port 3306

开始监听:

8727fe6582e93439b8e2b8c4201e6196_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

发起数据库链接:

60616eaf0a56cd5186e52d25a6d56351_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

好家伙,确实存在异常, tcp 第一次握手就失败了。

正常是这样的,有来有往。

d87119b20c5c399a1c61b374329f4e9f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image.png

我到底干了什么?

经过上面的种种操作,可以确定数据库没问题,数据库进程没问题,问题在于服务器的配置出问题了。

也就是端口访问被拦截。

思考了片刻,灵光乍现,前几天是不是玩了下宝塔,这货是不是有安全限制?

果然!

8ea130c3d86f4925b2bd763604bc0534_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage.png

最后我深深的给自己鞠了一躬!我服你!

3be4b6d7219d4f8c1a83658420b8db8b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.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 //端口抓包,好用的很
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
监控 关系型数据库 MySQL
Linux MySQL相关启动命令
【4月更文挑战第22天】
157 2
|
3月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 关系型数据库 MySQL
MySQL中主从复制的原理和配置命令
要原因包括提高性能、实现高可用性、数据备份和灾难恢复。了解两大线程( I/O 和 SQL)I/O线程:目的:I/O线程主要负责与MySQL服务器之外的其他MySQL服务器进行通信,以便复制(replication)数据。 功能: 当一个MySQL服务器作为主服务器(master)时,I/O线程会将变更日志(binary log)中的事件传输给从服务器(slave)。从服务器上的I/O线程负责接收主服务器的二进制日志,并将这些事件写入本地的中继日志(relay log)。 配置: 在MySQL配置文件中,你可以通过配置参数如和来启用二进制日志和指定服务器ID。log-bin server
111 1
MySQL中主从复制的原理和配置命令
|
19天前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
94 28
|
21天前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
27天前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
32 1
|
22天前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
46 1
|
2月前
|
关系型数据库 MySQL 数据库
MySQL有哪些常用命令?
【6月更文挑战第12天】MySQL有哪些常用命令?
38 3