MySQL 啟動(dòng)失敗的原因有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司自2013年起,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元方山做網(wǎng)站,已為上家服務(wù),為方山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
一、無(wú)法訪問(wèn)系統(tǒng)資源
MySQL 不能訪問(wèn)啟動(dòng)需要的資源是造成而 MySQL 無(wú)法啟動(dòng)的一個(gè)常見(jiàn)原因,如:文件,端口等。由于 linux 中用于啟動(dòng) mysqld 進(jìn)程的 mysql 用戶通常是不能登陸的,可以使用類(lèi)似下面的命令檢查文件的訪問(wèn)權(quán)限。
sudo -u mysql touch /var/lib/mysql/b
找出問(wèn)題后,修改對(duì)應(yīng)文件或目錄的權(quán)限或?qū)僦骱笸ǔ?梢越鉀Q問(wèn)題。但有時(shí) mysql 用戶有訪問(wèn)文件和目錄的權(quán)限,但仍然會(huì)被拒絕訪問(wèn),例如下面這個(gè)例子:
mysql> system sudo -u mysql touch /home/mysql/data/a mysql> create table t1 ( id int primary key,n varchar(10 ) data directory ERROR 1030 (HY000): Got error 168 from storage engine
測(cè)試說(shuō)明 mysql 用戶有這個(gè)目錄的訪問(wèn)權(quán)限,但創(chuàng)建文件還是失敗,這種情況讓很多人困惑,這個(gè)時(shí)候通常是 mysqld 進(jìn)程的訪問(wèn)被 linux 的 selinux 或 apparmor 給阻止了,大家可以看到創(chuàng)建的表不是在 mysql 的默認(rèn)目錄下面,因此 selinux 或 apparmor 的 policy 里面沒(méi)有包含這個(gè)目錄的訪問(wèn)權(quán)限,此時(shí)只要對(duì)應(yīng)的修改 policy 就行了,當(dāng)然把 selinux 或 apparmor 停了也行。
有時(shí)雖然對(duì)系統(tǒng)資源有訪問(wèn)的權(quán)限,但系統(tǒng)資源已經(jīng)被占用:
mysqld --no-defaults --console --user mysql 2020-11-03T03:36:07.519419Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 21171 2020-11-03T03:36:07.740347Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
這個(gè)故障產(chǎn)生的原因是另外一個(gè) mysqld 進(jìn)程已經(jīng)啟動(dòng)并占用了對(duì)應(yīng)的文件。
二、參數(shù)設(shè)置錯(cuò)誤
參數(shù)設(shè)置錯(cuò)誤造成 MySQL 無(wú)法啟動(dòng)的原因也非常常見(jiàn),此時(shí)先要檢查 MySQL 啟動(dòng)時(shí)會(huì)調(diào)用的參數(shù),下面的命令可以查詢(xún) MySQL 啟動(dòng)時(shí)調(diào)用參數(shù)文件的順序:
$ mysqld --verbose --help | grep "Default options " -A 1 Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
知道了 MySQL 參數(shù)文件的調(diào)用順序,我們就可以檢查對(duì)應(yīng)的參數(shù)文件,找出其中的錯(cuò)誤,如果覺(jué)得參數(shù)文件的可讀性不強(qiáng),可以使用下面的命令顯示 mysqld 程序?qū)⒁{(diào)用的參數(shù):
$ mysqld --print-defaults /usr/sbin/mysqld would have been started with the following arguments: ......
注意這個(gè)命令顯示完參數(shù)后就退出,不會(huì)真正運(yùn)行 mysqld。這個(gè)命令和 my_print_defaults mysqld 完全是等價(jià)的,只不過(guò)后者的顯示方式是一行一個(gè)參數(shù)。
然后開(kāi)始對(duì)可疑的參數(shù)進(jìn)行調(diào)試,我個(gè)人喜歡加的參數(shù)和順序如下:
1. 在 mysqld 后加上第一個(gè)參數(shù) --no-defaults ,這個(gè)參數(shù)的作用是通知 mysqld 在啟動(dòng)的時(shí)候不要讀任何參數(shù)文件;
2. 第二個(gè)參數(shù)是 --console,這個(gè)參數(shù)會(huì)把錯(cuò)誤信息輸出到屏幕上,這個(gè)參數(shù)帶來(lái)的一個(gè)弊端是所有的信息都輸出到屏幕上,讓屏幕顯得比較亂,但對(duì)于我們調(diào)試卻是很方便的;
3. 第三個(gè)參數(shù)是 --log-error-verbosity=3,這個(gè)參數(shù)會(huì)顯示詳細(xì)的日志;
4. 然后再在后面加上有把握的參數(shù),可以一次只加一個(gè)參數(shù),然后啟動(dòng) mysqld,采用排除法逐步找出錯(cuò)誤的參數(shù)。
看這個(gè)例子:
mysqld --no-defaults --console --log-error-verbosity=3 --user mysql --gtid_mode=on 2020-11-03T07:14:20.384223Z 0 [Note] [MY-010949] [Server] Basedir set to /usr/. 2020-11-03T07:14:20.384254Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 22617 2020-11-03T07:14:20.400221Z 0 [Note] [MY-012366] [InnoDB] Using Linux native AIO …… 2020-11-03T07:14:21.632851Z 0 [ERROR] [MY-010912] [Server] GTID_MODE = ON requires ENFORCE_GTID_CONSISTENCY = ON. 2020-11-03T07:14:21.634183Z 0 [ERROR] [MY-010119] [Server] Aborting …… 2020-11-03T07:14:23.026551Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL. root@scutech:~#
看這個(gè)例子,我們很容易知道是需要我們同時(shí)設(shè)置參數(shù) GTID_MODE 和 ENFORCE_GTID_CONSISTENCY 同時(shí)為 on 才行。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
當(dāng)前標(biāo)題:MySQL啟動(dòng)失敗的原因有哪些
鏈接分享:http://m.rwnh.cn/article46/jepdhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、企業(yè)建站、定制開(kāi)發(fā)、App開(kāi)發(fā)、電子商務(wù)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)