一次MySQL啟動(dòng)導(dǎo)致的事故實(shí)戰(zhàn)記錄
MySQL` 啟動(dòng)存在端口被監(jiān)聽(tīng), 但服務(wù)沒(méi)完全啟動(dòng)的情況.
背景
MySQL 啟動(dòng)時(shí)會(huì)進(jìn)行 第一次 初始化數(shù)據(jù)庫(kù), 等待 MySQL 完全啟動(dòng)后, 再進(jìn)行 第二次 初始化數(shù)據(jù)庫(kù).
第一次 初始化數(shù)據(jù)庫(kù)使用 --skip-networking (這個(gè)選項(xiàng)表示禁止 MySQL 的 TCP/IP 連接方式) 啟動(dòng) MySQL 進(jìn)行初始化,
初始化完成后會(huì)關(guān)閉 --skip-networking 選項(xiàng)重新啟動(dòng) MySQL.
第二次 初始化數(shù)據(jù)庫(kù)會(huì)設(shè)置 root 密碼.
判斷 MySQL 已完全啟動(dòng)的方式
嘗試主動(dòng)連接 MySQL, 連接成功則表明服務(wù)已完全啟動(dòng)
mysql -hlocalhost -P3306 -uroot
事故
由于上面的判斷方式使用的是 socket 進(jìn)行連接數(shù)據(jù)庫(kù), 但第一次只是禁止 MySQL 的 TCP/IP 連接方式,
所以沒(méi)等 第一次 初始化數(shù)據(jù)庫(kù)完成可能就已經(jīng)進(jìn)行了 第二次 初始化數(shù)據(jù)庫(kù),
而 第二次 初始化數(shù)據(jù)庫(kù)提前于 第一次 初始化數(shù)據(jù)庫(kù)設(shè)置 root 密碼, 導(dǎo)致 第一次 初始化連不上數(shù)據(jù)庫(kù)而失敗,
最后沒(méi)有開(kāi)啟 TCP/IP 連接方式, 應(yīng)用無(wú)法連接數(shù)據(jù)庫(kù).
第一次修改
使用 -h127.0.0.1 進(jìn)行連接數(shù)據(jù)庫(kù)
mysql -h127.0.01 -P3306 -uroot
但由于 root 用戶的 host 設(shè)置的是 localhost, 不允許 127.0.0.1 進(jìn)行連接, 第一次修改失敗.
第二次修改
wait-for-it.sh 127.0.0.1:3306 --timeout=300 mysql -hlocalhost -P3306 -uroot
wait-for-it.sh 用于檢測(cè) 127.0.0.1:3306 是否處于監(jiān)聽(tīng)狀態(tài), 如果是, 則表明 第一次 初始化數(shù)據(jù)庫(kù)完成了,
然后再使用 localhost 去嘗試連接數(shù)據(jù)庫(kù).
原文鏈接: k8scat.com/posts/wait-…
總結(jié)
到此這篇MySQL啟動(dòng)導(dǎo)致的事故的文章就介紹到這了,更多相關(guān)MySQL啟動(dòng)導(dǎo)致事故內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mysql服務(wù)啟動(dòng)不了解決方案
- MySQL無(wú)法啟動(dòng)幾種常見(jiàn)問(wèn)題小結(jié)
- 安裝MySQL 5后無(wú)法啟動(dòng)(不能Start service)解決方法小結(jié)
- CentOS 7下MySQL服務(wù)啟動(dòng)失敗的快速解決方法
- MySQL啟動(dòng)1053錯(cuò)誤解決方法
- windows無(wú)法啟動(dòng)MySQL服務(wù)報(bào)錯(cuò)1067的解決方法
- 碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法
- mysql授權(quán)、啟動(dòng)、啟動(dòng)服務(wù)常用命令
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)優(yōu)化詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)優(yōu)化的方方面面,各種小技巧,需要的朋友可以參考下2014-08-08解決啟動(dòng)MongoDB錯(cuò)誤:error while loading shared libraries: libstdc+
本文提供了解啟動(dòng)MongoDB時(shí)提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: 錯(cuò)誤的解決方案2018-10-10- 在下面的練習(xí)中,將創(chuàng)建一個(gè)應(yīng)用程序,它包含的一個(gè)方法能夠計(jì)算一名顧問(wèn)的收費(fèi)金額——假定該顧問(wèn)每天收取固定的費(fèi)用,將根據(jù)工作了多少天來(lái)收費(fèi)。首先要開(kāi)發(fā)應(yīng)用程序的邏輯,然后利用“生成方法存根向?qū)А眮?lái)寫(xiě)出這個(gè)邏輯使用的方法。接著,我們將在一個(gè)控制臺(tái)應(yīng)用程序中運(yùn)行方法,以獲得對(duì)該程序的最終印象。最后,我們將使用Visual Studio 2005調(diào)試器來(lái)檢查方法調(diào)用。2008-04-04
MySQL數(shù)據(jù)庫(kù)誤操作后快速回滾的方法
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)誤操作后快速回滾的方法的相關(guān)資料,需要的朋友可以參考下2016-12-12Mysql事務(wù)隔離級(jí)別原理實(shí)例解析
這篇文章主要介紹了Mysql事務(wù)隔離級(jí)別原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03MySQL INNER JOIN 的底層實(shí)現(xiàn)原理分析
這篇文章主要介紹了MySQL INNER JOIN 的底層實(shí)現(xiàn)原理,INNER JOIN的工作分為篩選和連接兩個(gè)步驟,連接時(shí)可以使用多種算法,通過(guò)本文,我們深入了解了MySQL中INNER JOIN的底層實(shí)現(xiàn)原理,需要的朋友可以參考下2023-06-06