二、常見問題集錦
MySQL總是崩潰
首先你應該試著找出問題mysqld守護進程是否死掉或你的問題是否與你的客戶有關。你可以用mysqladmin version檢查你的mysqld服務器正常執行了多長時間,如果mysqld死了,你可以在文件“MySQL-data-directory/'hostname'.err”中找到其原因。
使用MySQL時的一些常見錯誤
MySQL Server has gone away
常見的原因是服務器超時了並且關閉了連接。缺省地,如果沒有事情發生,服務器在 8個小時後關閉連接。你可在啟動MySQLd時通過設置wait_timeout變量改變時間限制。
如果MySQLd得到一個太大或不正常的包,它認為客戶出錯了並關閉連接。
Can't connect to [local] MySQL Server
通常意味著沒有一個MySQL服務器運行在系統上或當試圖連接MySQLd服務器時,你正在使用一個錯誤的套接字文件或TCP/IP端口。
檢查(使用ps)服務器上是否有一個名為MySQLd的進程啟動
如果一個MySQLd進程正在運行,可以通過嘗試這些不同的連接來檢查服務器
shell> MySQLadmin version
shell> MySQLadmin variables
shell> MySQLadmin -h `hostname` version variables
shell> MySQLadmin -h `hostname` --port=3306 version
shell> MySQLadmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/MySQL.sock version
注意hostname命令使用反引號“`”而非正引號“'”;這些導致hostname輸出(即,當前主機名)被代替進MySQLadmin命令中。
Host '...' is blocked錯誤
Host 'hostname' is blocked because of many connection errors.
Unblock with 'MySQLadmin flush-hosts'
這意味著,mysqld已經得到了大量(max_connect_errors)的主機'hostname'的在中途被中斷了的連接請求。在max_connect_errors次失敗請求後,mysqld認定出錯了(象來字一個黑客的攻擊),並且阻止該站點進一步的連接,直到某人執行命令MySQLadmin flush-hosts。
缺省地,MySQLd在10個連接錯誤後阻塞一台主機。你可以通過象這樣啟動服務器很容易地調整它: