网站首页 > 技术文章 正文
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 去尝试连接数据库.
猜你喜欢
- 2024-10-20 如何在 CentOS7 下改造MySQL开机启动服务?
- 2024-10-20 MySQL日志篇(mysql的日志文件在哪里)
- 2024-10-20 如何快速定位MySQL 的错误日志(Error Log)?
- 2024-10-20 小白自学MySQL笔记(一):Mac环境的安装和启动
- 2024-10-20 MySQL执行计划主要通过EXPLAIN命令来查看
- 2024-10-20 MySQL service启动脚本浅析(r12笔记第59天)
- 2024-10-20 借助shell脚本,解决MySQL服务自动停止的问题
- 2024-10-20 MySQL 还在跑任务时,突然断电,数据库崩了又好像没崩……
- 2024-10-20 超详细的mysql数据库查询缓存总结,值得收藏
- 2024-10-20 一文看懂mysql数据库本质及存储引擎innodb+myisam
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)