1.my.cnf配置文件中的datadir項配置錯誤或被啟動腳本篡改。
這個問題不是很明顯,主要是因為mysql自帶的啟動文件(/etc/init.d/mysqld)會自動檢測mysql的數據存儲目錄。如果mysql是新安裝的,系統表還沒有初始化,那麽配置文件中的datadir項是否寫入並不重要。這種情況主要是由於mysql的數據存儲目錄發生了變化,這就是我今天遇到的問題。
我的mysql配置文件中的datadir項目安裝後的配置如下,配置文件存儲在/etc/my.cnf中,不知道今天動了什麽,查了壹下也找不到原因。後來我打開配置文件,發現datadir項目被篡改為/var/mysql/data。.....
【mysqld】datadir =/data/MySQL socket =/tmp/MySQL . sock user = MySQL
第二,mysql進程已經存在於進程中。
我很少遇到這種情況。如果有mysql進程但沒有mysql服務(由於其他客戶端無法連接到mysql服務器,例如當php連接到mysql時,它會提示“連接失敗”),那麽就需要查看是否有mysql僵屍進程。該命令如下所示:
ps -ef|grep mysql
如果存在,現有的僵屍進程將在命令執行後列出,kill -9 `pid可被刪除。
第三,mysql的數據存儲目錄權限不足
首次安裝或升級mysql時會出現這種情況,應該設置配置文件中datatdir目錄的權限。壹般來說,運行mysql的用戶和組是mysql.mysql,因此解決權限不足問題的方法如下:
Chown-r mysql。mysql /data/mysql # #這個命令只是壹個示例,其中/data/mysql是mysql配置文件# #中datadir的目錄。如果為空,則默認為MySQL安裝目錄下的data文件夾。
第四,覆蓋安裝或升級mysql後殘留數據的影響。
這發生在mysql安裝或升級之後。當然,在mysql無緣無故宕機後也會發生這種情況,可能會影響mysql啟動的數據文件。壹般存在於mysql的數據存儲目錄中(此目錄根據my.cnf配置文件中的datadir而有所不同),即mysql數據存儲目錄中存在的mysql-bin.index文件。刪掉就好了。
第五,selinux的問題最有可能出現在centos下。
Selinux對此了解不多。關掉它。
# #方法1:永久關閉seliux # #在vi /etc/selinux/config #文件中修改SELINUX=disabled,然後重新啟動服務器# #方法2:暫時關閉seliux setenforce 0 ##。如果您需要在每次啟動時通過響鈴來關閉Seliux,您可以在/etc/rc.d/rc.local文件中這樣做。
6.在mysql運行狀態下刪除二進制日誌後重啟失敗。
這是今天群裏的壹個朋友,總結在這裏;當mysql打開二進制日誌,mysql在運行狀態下用rm命令刪除mysql二進制日誌文件時,您下次重新啟動mysql將是壹場悲劇。
什麽是二進制日誌?說白了就是mysql數據目錄中的mysql-bin.00001和mysql-bin.000002文件,如下圖所示。
解決方法是修改配置文件並暫時關閉binary-log,然後刪除mysql數據目錄中所有與mysql-bin.000001和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》Reset master下的清除二進制日誌命令#註:這僅針對單個MySQL。如果有備用的mysql,執行這個命令是有風險的。