一、確認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 &