今兒清理服務器上的廢棄文件,不知道動了mysql的什麼文件,重啓mysql進程時提示:php
Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/l/JJonline.pid).
就抓狂了,服務器上的幾個網站還跑着了,mysql啓動不了這不歇菜了。找了找相關這種問題的資料,這裏作下總結。mysql
這個問題不太說講,主要是mysql自帶的啓動文件(/etc/init.d/mysqld)中會自動檢測mysql的數據存儲目錄,若mysql新裝,還沒有初始化系統表,那麼配置文件中的datadir項寫不寫無所謂,出現這種狀況主要是在更改了mysql的數據存儲目錄,今天我出現的這個問題就在於此。linux
個人mysql安裝後的配置文件中關於datadir項目的配置以下,而該配置文件存儲於/etc/my.cnf,今兒不知動了什麼東西,查來查去都沒找着緣由,後來打開該配置文件才發現,其中的datadir項目被篡改爲/var/mysql/data了.....sql
[mysqld] datadir=/data/mysql socket=/tmp/mysql.sock user=mysql
這種狀況我不多遇到,若存在mysql進程但有不提供mysql服務(表現爲其餘客戶端鏈接不上mysql服務器,例如php鏈接mysql時提示「鏈接失敗」),這個時候就要看看有沒有存在的mysql殭屍進程了,命令以下:shell
ps -ef|grep mysql
若存在,該命令執行後會列出存在的殭屍進程,kill -9 `pid`掉便可。centos
這種狀況發生於mysql第一次安裝或升級,配置文件中的datatdir目錄的權限要設定好,通常來講運行mysql的用戶以及組就是mysql.mysql,那麼解決權限不足問題的方法以下:服務器
chown -R mysql.mysql /data/mysql ##該命令僅爲示例,其中/data/mysql就是mysql配置文件中datadir的目錄 ##若爲空,則默認爲mysql安裝目錄下的data文件夾下
這種狀況發生於mysql被覆蓋安裝或升級後,固然mysql無端宕機後也會有這種狀況,可能會影響mysql啓動的數據文件,通常存在於mysql的數據存儲目錄(這個目錄依據my.cnf配置文件中的datadir而異),也就是存在於mysql數據存儲目錄下的mysql-bin.index文件,刪除之便可。socket
selinux不甚瞭解,直接關掉。網站
##方法1:永久關閉seliux ##修改 vi /etc/selinux/config #文件中設置SELINUX=disabled ,而後重啓服務器 ##方法2:暫時關閉seliux setenforce 0 ##如需每次開機都鈴聲關閉seliux,則能夠在/etc/rc.d/rc.local文件中添加該命令
這是今天在羣裏的一個朋友出現的,特彙總於此;當mysql開啓了二進制日誌而且mysql在運行狀態下用rm命令刪除過mysql的binary日誌文件的話,下次重啓mysql你就悲劇了。ui
什麼是binary日誌?說白了就是mysql的數據目錄下的mysql-bin.00000一、mysql-bin.000002的文件,下圖所示。
解決方法就是修改配置文件臨時關閉binary-log,而後刪除mysql數據目錄下的全部相似mysql-bin.00000一、mysql-bin.000002的文件後再次重啓,mysql便可啓動成功。
#mysql配置關閉二進制日誌 找到以下語句 註釋掉便可 #log-bin=mysql-bin #binlog_format=mixed
此步驟操做完畢以後,若還須要啓用二進制日誌,那麼就要先停掉mysql服務,而後修改msyql的配置文件,再次重啓便可。
另外再附上正確刪除mysql二進制日誌文件的方法(絕對不是rm -rf命令直接刪這些文件):
#第一步 經過shell或cmd登陸進mysql 這步沒什麼好說的 msyql -u root -p *** #第二步 在mysql下直接執行清理binary日誌命令 mysql> reset master #注意:此處僅針對單臺mysql而言,如有互備mysql 則執行該命令有風險
各位訪客若遇到上述還沒有提到過的狀況,請留言反饋!