萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL無法啟動問題總結

MySQL無法啟動問題總結

MySQL無法啟動問題原因有千萬種,有大有小下面我來總結一些常見導致mysql數據庫不能啟動斬一些問題解決辦法。


一、確認MYSQL已經配置且正確

重新配置

如果是重新安裝的MYSQL,請確認安裝後的MYSQL經過第一次配置,否則會缺少my.ini文件,配置方法,可以在安裝到最後一步時選擇,現在開始配置MYSQL,或在程序組中運行MYSQL配置向導。配置完成後,要確保my.ini文件中[mysqld]字段下至少有basedir安裝目錄路徑和datadir數據庫路徑。

配置之前,如果原來已經有過MySQL配置,可以先在MYSQL向導中進行執行一次REMOVE INSTANCE,然後再重新配置。

覆蓋數據表

默認的MYSQL數據庫會安裝到My Document下,所以如果您的數據庫目錄在其它路徑下,可以先把MYSQL停止掉,然後把數據庫剪切到其它路徑,然後拷貝相關數據表進入同一目錄即可。

如果MYSQL數據表使用不同的賬戶,還需要在MYSQL創建賬戶,或直接使用原來的MYSQL數據表覆蓋(需確認之前的MSYQL數據表是未損壞的)。

解決無法啟動

遇到無法啟動MYSQL時常見解決方法:

A、先使用命令C:Program filesmysqlbinmysqladmin-u root -p shutdown來關閉MYSQL

B、再在cmd命令行下,執行net start mysql啟動mysql。

 

二、1067錯誤常見解決方法

故障現象

如果在停止MYSQL(net stop mysql)或啟動MYSQL時,出現1067錯誤,錯誤信息“MySql 服務正在停止...系統出錯(A system error has occurred.)...系統發生 1067 錯誤(System error 1067 has occurred.),進程意外終止(The process terminated unexpectedly.)”等。

常見解決方法

1.如果以前一直運行OK的,請先按照上面的“無法啟動”解決方法執行一次看看。
2.如果進行過Remove Instance操作,再次重建時後,一定要檢查my.ini文件中的datadir是否已被還原了,如果該地址下數據庫不存在,也將報告1067錯誤,只需要修改成真實的數據庫目錄地址,然後手動啟動即可。
3.檢查MYSQL目錄權限
4.檢查my.ini文件中[mysqld]字段下是否有basedir安裝目錄路徑和datadir數據庫路徑,my.ini可能需要出現在兩個地方,MYSQL的安裝目錄和Windows目錄(假設是windows環境)下,都要檢查一下。
5.有時候刪除%windir%/my.ini文件然後再重新配置也可以解決,再次配置後檢查一下Windir目錄下是否有my.ini文件,有時把安裝目錄下最新的my.ini拷貝過去覆蓋一下也能解決問題。
6.如果是Linux環境,試一下把mysql.server拷貝至/etc/rc.d/init.d/下,然後再運行chkconfig mysql.server,之後就可以在命令行中設置PATH、使用命令執行mysql啟動。
 

三、非法關機造成的MYSQL無法啟動問題

如果是因為非法關機等原因導致MYSQL無法啟動或啟動有問題的,最好使用重新安裝的或確認是OK的MYSQL數據表及ibdata1、mysql.pid、ib_logfile0等文件進行覆蓋,天緣試過遇到過多次這種情況,就是原來的MYSQL表有問題了,總是無法啟動,但是更換成新表就可以。

日志占滿空間導致的MySQL無法啟動問題

tail /usr/local/mysql/var/slyar.err

看了一下Mysql的錯誤日志,意外狀況出現。。。

Disk is full writing './mysql-bin.~rec~' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)

神奇的情況,居然是因為磁盤滿了無法寫入日志導致Mysql起不來

 代碼如下 復制代碼

root@slyar# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 3016688 2877540 0 100% /

果然啊,/var目錄爆了

 代碼如下 復制代碼

root@slyar:/usr/local/mysql/var# ll --block-size=MB
total 504MB
-rw-rw---- 1 mysql mysql 26MB Jul 23 2012 mysql-bin.000011
-rw-rw---- 1 mysql mysql 5MB Jul 26 2012 mysql-bin.000012
-rw-rw---- 1 mysql mysql 27MB Aug 8 2012 mysql-bin.000013
-rw-rw---- 1 mysql mysql 43MB Aug 23 2012 mysql-bin.000014
-rw-rw---- 1 mysql mysql 270MB Feb 9 17:05 mysql-bin.000020
-rw-rw---- 1 mysql mysql 115MB Apr 19 12:27 mysql-bin.000021
-rw-rw---- 1 mysql mysql 1MB Feb 10 12:07 mysql-bin.index
-rw-rw---- 1 mysql mysql 0MB Apr 19 12:34 mysql-bin.~rec~

基本上就是被這些玩意占滿了,查了一下Mysql手冊發現這些東西也沒啥用,直接刪除(此操作最好在Mysql服務停止時進行,因為當前日志使用的話無法刪除,而且有可能導致一些其它問題,不過用mysql>reset master命令可以直接清空日志)

 代碼如下 復制代碼

root@slyar:/usr/local/mysql/var# rm -f mysql-bin.*

為了防止再次出現此類狀況,直接關閉Mysql的log-bin日志功能

vim /etc/my.cnf

找到:

 代碼如下 復制代碼 log-bin=mysql-bin
binlog_format=mixed

在前面加上#注釋掉,:wq保存退出

最後

 代碼如下 復制代碼

/etc/init.d/mysql restart

啟動Mysql服務,一切正常。


ERROR 2002 (HY000):


啟動mysql 報錯:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

1、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已經啟動.
另外看看是不是權限問題.

2、確定你的mysql.sock是不是在那個位置,
mysql -u 你的mysql用戶名 -p -S /var/lib/mysql/mysql.sock

3、試試:service mysqld start

4、如果是權限問題,則先改變權限 #chown -R mysql:mysql /var/lib/mysql

[root@localhost ~]# /etc/init.d/mysqld start
啟動 MySQL: [ 確定 ]
[root@localhost ~]# mysql -uroot -p

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
   原因是,/var/lib/mysql 的訪問權限問題。

 代碼如下 復制代碼

shell> chown -R mysql:mysql /var/lib/mysql

接著啟動服務器

 代碼如下 復制代碼

shell> /etc/init.d/mysql start

服務器正常啟動後察看 /var/lib/mysql 自動生成mysql.sock文件。

但是我的問題仍然沒有得到解決。

問題終於解決:
方法:    修改/etc/my.conf:

 代碼如下 復制代碼

[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/usr/local/mysql

If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as:


[client]
socket=/var/lib/mysql/mysql.sock

發現依舊如此,運行/etc/init.d/mysql start報錯:    Starting MySQLCouldn't find MySQL manager or server
是mysqld服務沒啟,運行/usr/local/mysql/bin/mysqld_safe &

copyright © 萬盛學電腦網 all rights reserved