本人仍是個菜鳥,下面是個人經驗之談,能解決一些問題,有不對的地方,敬請斧正。html
個人是CentOS6.3+MySQL5.1.57。mysql
重啓了一次服務器後, 使用> mysql -u root -p登錄是出現下面的錯誤:linux
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)sql
因而,我檢察mysql狀態:數據庫
> /etc/rc.d/init.d/mysqld status vim
顯示stop,未運行。windows
>/etc/rc.d/init.d/mysqld restart安全
Stopping mysqld: [ OK ]服務器
Starting mysqld: [ FAILED]socket
>ps -ef | grep mysql
root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql 只有這一條
至此,我能夠肯定,mysql沒法啓動。
我開始排錯,首先發現/tmp/mysql.sock不存在
>vim /etc/my.cnf
socket=/var/lib/mysql/mysql .sock
/var/lib/mysql/mysql .sock一樣不存在
>find / -name mysql.sock
顯示爲空,未查詢到mysql.sock文件,mysql.sock文件丟失了。
我看網上有人說 mysql.sock套接字文件 能夠簡單地經過重啓服務器從新建立獲得它,
>init 6 重啓命令
重啓後發現錯誤仍是那樣,沒有任何改變,mysql.sock重啓服務器未自動生成。
接下來了解到mysql.sock是一個臨時文件,在mysql啓動時會自動生成,個人服務器未啓動,天然就沒有mysql.sock文件。
我嘗試 安全啓動模式, mysqld_safe試圖經過工做目錄找到服務器和數據庫,但 mysqld_safe仍是失敗。
>mysqld_safe &
Starting mysqld daemon with databases from ....../mysql/var
STOPPING server from pid file .......pid
130802 15:17:11 mysqld ended
各類命令嘗試無效的狀況下,我開始了本次最大的收穫----學會看錯誤日誌。
在錯誤日誌中,啓動失敗的緣由極爲明顯,file ‘./mysql-bin。000004’ not found,failed to open!
mysql開啓了bin日誌功能,到數據庫根目錄查看該文件是存在的,多是文件權限的問題。
>chown -R mysql:mysql /....../mysql/var
> mysqld_safe &
>/etc/rc.d/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK]
成功啓動了!~
此時mysql.sock文件出現了,在/var/lib/mysql/mysql .sock。以下圖所示, 以」s」開頭的文件都是socket文件。
> mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/tmp/mysql.sock
解決這個錯誤很簡單,由於/tmp/mysql.sock不存在, 用這樣的方法:
>ln -s /var/lib/mysql/mysql .sock /tmp/mysql .sock
以」l」開頭的文件是軟連接文件。或者 能夠經過修改/etc/my.cnf文件來修正它。
成功解決了!~
就是這樣一個問題折騰了我這麼久,錯誤日誌讓它無所遁形。查看錯誤日誌能夠明確問題所在,而不是像我以前那樣盲目的找錯。
俗話說授人以魚不如授人以漁,學會查看日誌,你也能夠方便快捷的解決問題了。
錯誤令人進步,我與這個錯誤鬥爭了四個多小時,對linux的 「一切皆文件」這句話有了更深的瞭解,對我學習文件系統管理(目錄樹)有很大的幫助, 讓個人思惟真正的從windows操做系統轉向成linux系統。並最終解決問題,頗有成就感,我喜歡這種感受。
但願能對閱讀的你有所幫助,謝謝!~