本文: MySQL版本: 5.0.22 (可到 MySQL.cn 中文站下載更加新的版本)
其實MySQL在Linux下,只是一個軟體...沒咩大不了,就好像響你部電腦裡邊裝佐個CS伺服器一樣...距只系用來提供SQL服務.
其實整個安裝過程並不複雜,~但網上好多網友們都說裝好了這裡不能用,那裡不能用..都是因為細微的東西沒有調好..而這篇手記,就記載了我整整一個國慶研究Linux下安裝MySQL,為什麼不成功的問題解決方案.
先說說眾所周知的安裝方法.
下載了mysql-5.0.22-2.1.i386.tar 和 mysql-devel-5.0.22-2.1.i386.rpm 安裝包(記得devel最好開始就裝上, 很多安裝包依賴mysql.h的, 否則後面重裝沒商量).
然後就 tar -zxvf mysql-5.0.22-2.1.i386.tar (就是解壓縮)
然後就進入已解壓縮的目錄 cd MySQL mysql-5.0.22-2.1.i386
然後就 ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
以上命令意思備忘:
#prefix=/usr/local/mysql mysql 安裝的目標目錄
#sysconfdir=/etc my.ini 設定檔的路徑
#localstatedir=/var/lib/mysql 資料庫存放的路徑
等待若干分鐘之後~就 make~
make這個東西...對於MySQL源碼包來說簡直就是....我這台測試伺服器的CPU是 PIII 1G 的~等上了我半個小時.
然後就半個小時之後~~就 Make Install ...等大概幾分鐘.這樣MySQL 就算安裝完畢了.下邊就開始做細微的東西.
安裝完以後要初始化資料庫:
/usr/local/mysql/bin/mysql_install_db
如果系統沒有mysql這個使用者的話,最好做以下這步:
useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
然後我啟動mysql(下邊這個啟動代碼的寫法很重要,記住要加上執行使用者 --user=XXX)
/usr/local/mysql/bin/mysqld_safe --user=root& 或者 --user=mysql&
ok,先看看mysql能否正常工作
一般情況下都是不能正常連結資料庫,錯誤提示一般為:
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
其實網上大家問的最多的都是整個問題,說什麼連結不到mysqld.sock,其實大家不妨看看mysql的錯誤記錄檔就明白怎麼回事,我這裡的錯誤記錄檔是在
/var/lib/mysql/*.err 你會發現mysql只所以不能啟動,是因為/var/lib/mysql的許可權不允許mysql服務訪問,英文mysql預設是調用mysql使用者來啟動服務的,好了,既然知道是什麼原因找到不能啟動,那就簡單了。我們只要
chown -R mysql:mysql /var/lib/mysql 就行,如果還是啟動不了,再慢慢調試許可權,反正一般啟動不了都是許可權的問題。或者是少了什麼目錄...記得要看這個/var/lib/mysql/*.err 錯誤記錄檔,他能告訴你錯在哪.
如果大家還是不能啟動不了的話,那就用我的比較繁瑣的許可權的設定,反正我每次都是這麼做的,一般不會有問題,見下:
chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
做完上面的步驟,再次運行 /usr/local/mysql/bin/mysqld_safe --user=root&
沒有出現 End 這東西...就證明 MySQL成功運行了..
再用連接埠命令證實一次 netstat-ant ~~看到有 3306 連接埠,即已成功!
然後把你編譯目錄的一個指令碼COPY過去
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
用ntsysv設定使mysql每次啟動都能自動運行。
但!,往往很多網友都發現,當他們重新啟動伺服器MySQL不能自動啟動.
運行 etc/rc.d/init.d/mysqld start 的時候..就出現 [ 失敗 ]
而運行/usr/local/mysql/bin/mysqld_safe --user=root& 就成功的.
為什麼?? 這個就是鬱悶了我這麼久的原因!!..原來..Linux As4這個版本對許可權要求很嚴格!!..我們剛剛開始建立的帳戶mysql..沒有運行程式的許可權.而 etc/rc.d/init.d/mysqld start 這個教本的執行預設使用者,就偏偏是 mysql
所以就導致了怎樣也啟動不了.同樣道理.~如果啟動並執行是
運行/usr/local/mysql/bin/mysqld_safe --user=mysql & 而不是 --user=root& 的話,一樣執行不了.
所以!...只要把 mysql 這個使用者,在mysql組裡邊的同時,再添加到root組.~就是說,擁有root那樣,能夠執行程式的許可權.
再次執行etc/rc.d/init.d/mysqld start 試試~~嘿嘿!成功啦!..
再試試重新啟動~~一開完機,就輸入 netstat -ant 看看!..嘿嘿!~..3306 顯在了!
/usr/local/mysql/bin/mysqladmin -u root -p password 'mysql的root密碼'
再通過以上命令修改MySQL的密碼~
好了,至此mysql安裝完畢.
注意很多時候我們源碼安裝一些依賴Mysql的程式包時, 提示Cannot find MySQL header files, 這是因為沒有裝開發版的原因,或者沒有正確指定路徑,
find / -name mysql.h
- 找不到就要安裝了: 下載mysql-devel-5.0.22-2.1.i386.rpm 安裝包(記得devel最好開始就裝上, 很多安裝包依賴mysql.h的, 否則後面重裝沒商量).
rpm -ivh mysql-devel-5.0.22-2.1.i386.rpm