最近在學習源碼編譯安裝LAMP、LNMP時,一直遇到一個難題,就是就是mysql無論怎麼源碼編譯安裝,到最後啓動服務都提示"Starting MySQL.The server quit without updating PID file (/data/mysql/localhost.pid). [FAILED]",因爲是初學linux,不知道在哪查看和怎麼查看MySQL錯誤日誌,也沒人指點,在網上搜了一大堆解決方法,也沒有解決,這時自己就想了想,再沒有埋頭安裝,就在QQ上找了些linux學習交流羣,加上去後諮詢了一下,說是數據存放目錄的權限問題,檢查了一下,確認不是數據存放目錄的權限問題,之後我又諮詢確認了一下,也不是配置文件語法問題,也不是編譯安裝問題和依賴庫文件等問題,最後讓我看了看MySQL的端口3306是否被佔用,這時我敲入"netstat -antulp"回車,看到確實有一個進程號爲"1331"的進程佔用了3306端口,之所以佔用,是因爲之前我多次安裝啓動造成的,如下所示:
[root@localhost ~]# netstat -antulp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1174/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1417/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1157/php-fpm
tcp 0 52 192.168.1.200:22 192.168.1.209:2375 ESTABLISHED 1523/sshd
tcp 0 0 :::22 :::* LISTEN 1174/sshd
tcp 0 0 ::1:25 :::* LISTEN 1417/master
tcp 0 0 :::3306 :::* LISTEN 1331/mysqld
tcp 0 0 :::80 :::* LISTEN 797/httpd
知道了佔用3306端口的進程號後好就好了,敲入"kill 1331"回車後,再入查看端口("netstat -antulp")佔用,出來的信息裏面已經沒有佔用3306端口的進程了,如下所示:
[root@localhost ~]# kill 1331
[root@localhost ~]# netstat -antulp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1174/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1417/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1157/php-fpm
tcp 0 52 192.168.1.200:22 192.168.1.209:2375 ESTABLISHED 1523/sshd
tcp 0 0 :::22 :::* LISTEN 1174/sshd
tcp 0 0 ::1:25 :::* LISTEN 1417/master
tcp 0 0 :::80 :::* LISTEN 797/httpd
現在接着敲入"service mysqld start"回車後,呵呵,看到了mysql服務啓動成功,如下:
[root@localhost ~]# service mysqld start
Starting MySQL.... SUCCESS!
之後,我又查看了相關資料,有說是編譯安裝的順序問題,及編譯參數問題,就抱着試了試的態度,實踐了一邊,還真是沒有任何錯誤的安裝成功,啓動成功了,方法還是前面的編譯安裝方法,只是順序不一樣了,呵呵,現總結如下:
這裏下載MySQL壓縮包,解壓縮,安裝依賴庫文件我就不再描述了,只總結寫下重要的編譯安裝順序;
1、檢查系統配置環境:cmake .回車,中間的內容省略;
2、添加MySQ用戶和用戶組:groupadd mysql回車,useradd -g mysql mysql -s /sbin/nologin -M -r回車;
3、創建mysql安裝目錄以及數據庫存放目錄,並給予數據庫存放目錄權限:
mkdir -p /data/mysql
chown -R mysql.mysql /data/mysql
mkdir -p /usr/local/mysql
4、編譯及安裝:make&&make install;
5、初始並生成系統mysql數據庫:cd /usr/local/mysql 回車,進入到mysql安裝目錄,然後敲入:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql回車生成mysql系統數據庫;
6、這時mysql安裝目錄下已生成mysql客戶端配置文件:my.cnf,現在敲入cp my.cnf /etc/my.cnf回車,提示是否要覆蓋當前文件,按y就可以了,編輯/etc/my.cnf: vi /etc/my.cnf回車,在[mysqld]部分增加下面一行(注意是增加,不是修改:";datadir = ")
datadir = /data/mysql
:wq! //保存
7、cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld // 把mysql 加入系統啓動
chmod +x /etc/init.d/mysqld #給予執行權限
chkconfig mysqld on #加入開機啓動
8、vi /etc/rc.d/init.d/mysqld
修改下面兩行定義
basedir=/usr/local/mysql //MySQL目錄位置
datadir=/data/mysql // MySQl數據庫存放目錄 大約在46、47行,注意,等號後面不要有空格
9、service mysqld start ,呵呵相信你們的也沒有任何錯誤的啓動成功了吧
10、vi /etc/profile 把mysql服務加入系統環境變量:在最後邊一行的下面添加下面這一行
export PATH=$PATH:/usr/local/mysql/bin
:wq! // 保存
11、下面這兩行把myslq的庫文件鏈接到系統默認的位置,這樣你在編譯類似PHP等軟件時可以不用指定mysql的庫文件地址
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
shutdown -r now
12、需要重啓系統,等待系統重新啓動之後繼續在終端命令行下面操作
mysql_secure_installation #根據提示按Y 回車,然後輸入2次同樣的密碼,繼續按Y回車,直到設置完成。
或者採用下面的方式直接修改密碼 /usr/local/mysql/bin/mysqladmin -u root -p password "123456" 13、service mysqld restart
至此,mysql5.5.27安裝完畢 # mysql -V
mysql Ver 14.14 Distrib 5.5.27, for Linux (i686) using EditLine wrapper
總結的有遺漏或不對的地方還請大家指正,謝謝,希望能給和我一樣初學linux的朋友帶來幫助!