一、確認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在前面加上#注釋掉,: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 &