最近在公司做的項目中用到了MySQL數據庫,系統版本是CentOS 5.1 i386。在剛安裝完時,使用quot;service mysql startquot;無法正
最近在公司做的項目中用到了MySQL數據庫,系統版本是CentOS 5.1 i386。
在剛安裝完時,使用"service mysql start"無法正常開啟。手動運行mysqld_safe程序,錯誤信息是"...../etc/rc.d/init.d/mysql 159:kill(xxxx) no such process"。在網上搜了一下,很多人都解決了,但是沒有見到詳細的講解和錯誤原因的分析。我又看了一下MySQL的說明文檔,發現了問題所在。此錯誤信息,說明mysqld_safe程序啟動失敗---雖然顯示的是無法kill某進程,此處的kill只是為了測試指定進程是否仍然存在。
當出現錯誤時,你需要檢查以下內容:
1、selinux是否已經關閉。
2、如果使用默認的方式安裝,查看用戶"mysql"是否已創建。
3、mysql配置信息中的datadir目錄是否已經創建(使用此命令查看已配置的datadir:mysqld --verbose --help | grep datadir)。
4、datadir目錄的所有者,是否和mysqld_safe命令行選項中的相同(默認為"mysql"用戶)。
錯誤原因分析:
1、在使用RPM包安裝完MySQL-server-xxxx.rpm之后,會看到終端中顯示了上面提到的錯誤,MySQL開啟失敗。此時造成開啟失敗的原因,很有可能是開啟了selinux,關閉selinux(具體方法請google一下),重啟系統,,一般情況下,問題可以解決。剛才已在我的虛擬機中重新嘗試了一次。
2、使用rpm包進行安裝時,會自動創建"mysql"用戶,但是在某些“可信的操作系統”中,root用戶無權添加新用戶,會導致錯誤。此時你可以使用具有添加新用戶權限的用戶,手動添加"mysql"帳戶,密碼隨意設置。當你只能使用root用戶時,可以在my.cnf(下面會介紹此文件)中做如下修改:
[mysqld]
user = root #或者是其他可使用的用戶名稱
此處的"root"即為腳本中調用mysqld_safe程序時,命令行中指定的系統用戶。
3、安裝MySQL-server-xxxx.rpm之后,顯示正常開啟,但是修改了my.cnf(原文件為/usr/share/mysql/中的my-xxxx.cnf文件,需要選擇合適的文件復制到/etc/目錄中,并且改名為my.cnf)文件之后,出現錯誤。此時錯誤的原因,很有可能是因為你沒有調用mysql_install_db函數,此函數負責創建mysql的基本數據庫,如登錄用戶的信息等,以及使用my.cnf對mysql進行配置,如數據庫目錄(datadir),根目錄(basedir)等。在當前系統中,默認datadir為/var/lib/mysql/。
4、使用rpm包安裝時,mysql_install_db函數被默認的調用,但是配置信息也是默認的。當你改寫了my.cnf文件之后,需要重新調用"mysql_install_db --user=mysql"命令,以按照新的配置文件對數據庫進行配置。其中的"--user=mysql"選項,使創建的datadir的創建者和所有者為mysql用戶(使用rpm包安裝時,自動創建此用戶)。如果沒有為mysqld_safe指定其他用戶,必須添加此選項。
參考以上的方法,MySQL無法正常啟動的問題應該能夠解決。對于CentOS 5.1以外的系統,沒有進行測試。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com