一次MySQL启动导致的事故实战记录


Posted in MySQL onSeptember 15, 2021

MySQL` 启动存在端口被监听, 但服务没完全启动的情况.

背景

MySQL 启动时会进行 第一次 初始化数据库, 等待 MySQL 完全启动后, 再进行 第二次 初始化数据库.

第一次 初始化数据库使用 --skip-networking (这个选项表示禁止 MySQL 的 TCP/IP 连接方式) 启动 MySQL 进行初始化,

初始化完成后会关闭 --skip-networking 选项重新启动 MySQL.

第二次 初始化数据库会设置 root 密码.

判断 MySQL 已完全启动的方式

尝试主动连接 MySQL, 连接成功则表明服务已完全启动

mysql -hlocalhost -P3306 -uroot

事故

由于上面的判断方式使用的是 socket 进行连接数据库, 但第一次只是禁止 MySQL 的 TCP/IP 连接方式,

所以没等 第一次 初始化数据库完成可能就已经进行了 第二次 初始化数据库,

而 第二次 初始化数据库提前于 第一次 初始化数据库设置 root 密码, 导致 第一次 初始化连不上数据库而失败,

最后没有开启 TCP/IP 连接方式, 应用无法连接数据库.

第一次修改

使用 -h127.0.0.1 进行连接数据库

mysql -h127.0.01 -P3306 -uroot

但由于 root 用户的 host 设置的是 localhost, 不允许 127.0.0.1 进行连接, 第一次修改失败.

第二次修改

wait-for-it.sh 127.0.0.1:3306 --timeout=300

mysql -hlocalhost -P3306 -uroot

wait-for-it.sh 用于检测 127.0.0.1:3306 是否处于监听状态, 如果是, 则表明 第一次 初始化数据库完成了,

然后再使用 localhost 去尝试连接数据库.

原文链接: k8scat.com/posts/wait-…

总结

到此这篇MySQL启动导致的事故的文章就介绍到这了,更多相关MySQL启动导致事故内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL 数据丢失排查案例
May 08 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
详解MySQL集群搭建
May 26 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 #MySQL
MySQL 如何限制一张表的记录数
Sep 14 #MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 #MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 #MySQL
MySQL中连接查询和子查询的问题
mysql配置SSL证书登录的实现
MySQL约束超详解
Sep 04 #MySQL
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python使用wxPython实现计算器
2018/01/30 Python
目前最全的python的就业方向
2018/06/05 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
上班上网检讨书
2014/01/29 职场文书
体育教师自我鉴定
2014/02/12 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Nginx本地目录映射实现代码实例
2021/03/31 Servers
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS