mysql啟動不了服務(wù)啟動不了該怎么辦
為沽源等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及沽源網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、沽源網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
我遇到同樣的錯誤,折騰了好久才摸索出來。網(wǎng)上的解決辦法都試過了,沒有確實(shí)可行的。最終總結(jié)出來,終于解決了。
我的下載的是mysql-5.7.9綠色版出的問題。最終解決過程供你參考:
1、下載的mysql-5.7.9,出現(xiàn)你的問題。試了各種辦法無法解決。有網(wǎng)友說mysql-5.7.9版本有問題。我改下載了5.6.27版本,嘗試不成功。但報錯變?yōu)椋簾o法啟動mysql服務(wù),發(fā)生錯誤1067。解決辦法:my.ini 添加 tmpdir = D:\mysql-5.6.27-winx64\data。問題解決。
2、后來我對比了mysql-5.7.9與5.6.27,發(fā)現(xiàn)mysql-5.7.9-winx64沒有data目錄,mysql-5.6.27-winx64\data\mysql,存了不少數(shù)據(jù)文件。原來調(diào)試5.7.9的版本時,記得日志報告一直有mysql.user、mysql.plugin不存在的提示。(原以為這些文件會自動生成)。后來把這個mysql-5.6.27-winx64\data下的mysql文件夾整個復(fù)制到5.7.9版本中的同目錄下。問題解決。
現(xiàn)象:mysql安裝后通過 service mysqld start 無法啟動。
報錯信息如下:
主要含義是說:
mysql啟動過程中找不到 /var/lib/mysql/aria_log_control 這個文件;
或者這個文件存在但是打不開。
所以我懷疑的方向有兩個:
1、 /var/lib/mysql/aria_log_control 這個文件不存在;
切換到/var/lib/mysql目錄下,查看文件是否存在:
可以看到文件是存在的,只是這個文件的屬主不對,這里是root,應(yīng)該是mysql用戶和用戶組才對。
2、所以應(yīng)該是第二個懷疑的方向,文件存在,但是沒有權(quán)限操作:
把該文件的屬主改為mysql:
chown -R mysql.mysql /var/lib/mysql
并修改文件的操作權(quán)限:
chmod 755 /var/lib/mysql
再執(zhí)行 service mysqld start 就可以正常啟動了。
服務(wù)沒有起來,你怎么進(jìn)去!試試樓主所說的再dos中執(zhí)行net start mysql試一試!
不行的話就在我的電腦右鍵管理 服務(wù)中開啟mysql的服務(wù)!
一、無法訪問系統(tǒng)資源
MySQL 不能訪問啟動需要的資源是造成而 MySQL 無法啟動的一個常見原因,如:文件,端口等。由于 linux 中用于啟動 mysqld 進(jìn)程的 mysql 用戶通常是不能登陸的,可以使用類似下面的命令檢查文件的訪問權(quán)限。
sudo -u mysql touch /var/lib/mysql/b
找出問題后,修改對應(yīng)文件或目錄的權(quán)限或?qū)僦骱笸ǔ?梢越鉀Q問題。但有時 mysql 用戶有訪問文件和目錄的權(quán)限,但仍然會被拒絕訪問,例如下面這個例子:
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
測試說明 mysql 用戶有這個目錄的訪問權(quán)限,但創(chuàng)建文件還是失敗,這種情況讓很多人困惑,這個時候通常是 mysqld 進(jìn)程的訪問被 linux 的 selinux 或 apparmor 給阻止了,大家可以看到創(chuàng)建的表不是在 mysql 的默認(rèn)目錄下面,因此 selinux 或 apparmor 的 policy 里面沒有包含這個目錄的訪問權(quán)限,此時只要對應(yīng)的修改 policy 就行了,當(dāng)然把 selinux 或 apparmor 停了也行。
有時雖然對系統(tǒng)資源有訪問的權(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
這個故障產(chǎn)生的原因是另外一個 mysqld 進(jìn)程已經(jīng)啟動并占用了對應(yīng)的文件。
二、參數(shù)設(shè)置錯誤
參數(shù)設(shè)置錯誤造成 MySQL 無法啟動的原因也非常常見,此時先要檢查 MySQL 啟動時會調(diào)用的參數(shù),下面的命令可以查詢 MySQL 啟動時調(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)用順序,我們就可以檢查對應(yīng)的參數(shù)文件,找出其中的錯誤,如果覺得參數(shù)文件的可讀性不強(qiáng),可以使用下面的命令顯示 mysqld 程序?qū)⒁{(diào)用的參數(shù):
$ mysqld --print-defaults
/usr/sbin/mysqld would have been started with the following arguments:
......
注意這個命令顯示完參數(shù)后就退出,不會真正運(yùn)行 mysqld。這個命令和 my_print_defaults mysqld 完全是等價的,只不過后者的顯示方式是一行一個參數(shù)。
然后開始對可疑的參數(shù)進(jìn)行調(diào)試,我個人喜歡加的參數(shù)和順序如下:
1. 在 mysqld 后加上第一個參數(shù) --no-defaults ,這個參數(shù)的作用是通知 mysqld 在啟動的時候不要讀任何參數(shù)文件;
2. 第二個參數(shù)是 --console,這個參數(shù)會把錯誤信息輸出到屏幕上,這個參數(shù)帶來的一個弊端是所有的信息都輸出到屏幕上,讓屏幕顯得比較亂,但對于我們調(diào)試卻是很方便的;
3. 第三個參數(shù)是 --log-error-verbosity=3,這個參數(shù)會顯示詳細(xì)的日志;
4. 然后再在后面加上有把握的參數(shù),可以一次只加一個參數(shù),然后啟動 mysqld,采用排除法逐步找出錯誤的參數(shù)。
1、情況一:MySQL的錯誤日志文件(安裝目錄\MYOA\data5\機(jī)器名.err)會記錄如下內(nèi)容:
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace
解決方法:
1)剪切出安裝目錄\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm兩個文件;
2)啟動MySQL5_OA服務(wù),使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫中。如果提示flow_data_35表已經(jīng)存在不能導(dǎo)入,則繼續(xù)按后續(xù)步驟執(zhí)行;
3)在data5下手動建立tmp目錄;
4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名稱為flow_data_35的表(包含一個字段即可);
5)將tmp下的flow_data_35.frm和flow_data_35.ibd拷貝到安裝目錄\MYOA\data5\TD_OA目錄下;
6)在MySQL管理工具或MySQL命令行程序中,進(jìn)入TD_OA庫,使用“drop table flow_data_35;”命令清除公共表空間中殘留的flow_data_35表的相關(guān)信息;
7)進(jìn)入tmp庫,刪掉flow_data_35表;
8)使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫中;
9)如果還有其他表存在該問題,可重復(fù)執(zhí)行4至8步驟。
2、情況二:MySQL的錯誤日志文件(安裝目錄\MYOA\data5\機(jī)器名.err)會記錄如下內(nèi)容:
130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.
130409 15:54:31 InnoDB: The InnoDB memory heap is disabled
130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3
130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M
InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8
130409 15:54:32 InnoDB: Completed initialization of buffer pool
130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.
130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb
130409 15:54:32 [ERROR] Aborting
解決方法:
此情況出現(xiàn)的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服務(wù)器操作系統(tǒng)不支持所致。改小后再啟動mysql5_OA服務(wù)即可,一般保持和數(shù)據(jù)庫大小一致。數(shù)據(jù)庫大小即是myoa/data5的大小。
3、情況三:mysql服務(wù)啟動不了,事件查看器中顯示:The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.
解決方法:安裝目錄\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件屬性被設(shè)置為只讀導(dǎo)致,取消只讀控制,重啟mysql5_OA服務(wù)即可。
4、情況四:MySQL的錯誤日志文件(data5\機(jī)器名.err)會記錄如下內(nèi)容:InnoDB: No valid checkpoint found.
解決方法:此問題找不到檢查點(diǎn),數(shù)據(jù)庫是無效的,此種情況,只能用熱備份數(shù)據(jù)恢復(fù)。
5、以上四種情況,是2013版OA系統(tǒng)目前比較常見的mysql服務(wù)啟動不了的現(xiàn)象和解決辦法,大家可作參考,其他情況的話,再具體分析處理。
6、分析思路總結(jié):遇到mysql5_OA服務(wù)啟動不了的情況,首先查看myoa\data5下的錯誤日志文件,根據(jù)日志中的具體內(nèi)容進(jìn)行具體分析。
7、2013版MYSQL服務(wù)啟動不了(可以嘗試強(qiáng)制啟動mysql服務(wù))方法如下:
1)打開\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前邊的注釋。
2)啟動MySQL5_OA服務(wù),此時MySQL處于只讀狀態(tài),可以導(dǎo)出,不可寫入。如果仍不能啟動,可以嘗試將innodb_force_recovery修改為2、3、4、5、6等,直到可以啟動為止。
3)使用MySQL管理工具,將TD_OA等相關(guān)的數(shù)據(jù)庫導(dǎo)出為SQL文件。
4)停止MySQL5_OA服務(wù),刪除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。
5)打開\MYOA\mysql5\my.ini,在innodb_force_recovery=1前邊加上#號,將該項(xiàng)注釋掉。
6)啟動MySQL5_OA服務(wù),然后導(dǎo)入此前備份的SQL文件。
7)檢查數(shù)據(jù)庫,將無法通過該方法恢復(fù)的數(shù)據(jù)表,通過之前自動備份的SQL文件進(jìn)行恢復(fù)。