MySQL 從5.5開始改用cmake來編譯源碼代替./configure,
#本例為編譯源碼安裝 mysql-5.5.20 :
在編譯安裝 MySQL 5.5.x 之前,需要最少安裝的包有:
gcc4.4.6、gcc-c++、cmake、ncurses-devel、bison
【 建議升級centOS到6.2,否則安裝gcc4.4.6 】
centOS 6.2 只需安裝cmake、ncurses-devel、bison,後兩個用yum -y install bison命令安裝即可,cmake參下文
一、安裝 cmake --前提軟件。
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake
gmake install
二、添加 Mysql 帳號 :mysql是否可登錄,看自己需要
#不加密碼默認禁止登錄,參vi /etc/shadow
groupadd mysql
useradd -g mysql mysql
或添加不可登錄的系統用戶,視自己帳號管理需要來定:
# useradd -M -r --shell /sbin/nologin --home-dir /usr/local/mysql mysql
三、 安裝 Mysql :安裝前務必檢查gcc等依賴軟件是否安裝了。
-----------------------------------------------------------
准備工作:
1、創建所需目錄:
# mkdir -p /usr/local/mysql
# mkdir -p /var/lib/mysql --如果需要放mysql.sock到此目錄則創建
2、可檢查是否安裝過mysql:
# rpm -qa |grep mysql 如果有安裝mysql,將出現以下信息
mysql-5.0.77-4.el5_5.4
mysql-devel-5.0.77-4.el5_5.4 //這裡顯示安裝了mysql和mysql-devel,沒有則不顯示
# rpm -e mysql mysql-devel //卸載MySQL安裝包
3、下載MYSQL源碼包:
# wget http://mysql.cs.pu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.20.tar.gz
-----------------------------------------------------------
tar zxvf mysql-5.5.16.tar.gz 解壓到/usr/local/src下。目錄名為mysql-5.5.20
cd mysql-5.5.16
(1) 5.5+已改用cmake,其選項參考INSTALL-SOURCE最後部分:
(2) cmake -D<變量>=<值> ,可以通過# cmake . -LH 查看支持的選項,
(3) 注意cmake後面有點號
(5) 5.5.20的MyISAM, MERGE, MEMORY, and CSV幾個引擎總是強制靜態編譯進服務器。其它引擎想編譯進入,用-DWITH_引擎名值_STORAGE_ENGINE=1 加入,引擎名值如下:
ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB),NDBCLUSTER (NDB), PARTITION (partitioning support), PERFSCHEMA (Performance Schema)。
開始安裝:
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/mysqldata \ -- 數據庫路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ --默認位置是/tmp/mysql.sock
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \ -- 指定是否允許本地執行LOAD DATA INFILE,默認OFF
-DWITH_SSL=yes \ -- 支持 SSL
-DWITH_DEBUG=0
【警告】不要使用-DWITH_EXTRA_CHARSETS(擴展字符集),否則會造成gbk,gb2312無法使用的現象,即使你指定了其值為gbk,gb2312也不行,該選項與-DEXTRA_CHARSETS=all有排斥,加入後-DEXTRA_CHARSETS=all無效。
# 以上未用到的其它參數:
-DWITH_COMMENT:指定編譯備注信息。
-DMYSQL_TCP_PORT=3306指定端口。
-DSYSCONFDIR=/ mysqldata/3306 指定文件my.cnf位置。如設此選項則後面應復制my.cnf到此目錄
其它選項參考INSTALL-SOURCE文件。
-------------------
//make編譯過程中,如出現“警告:提領類型雙關的指針將破壞強重疊規則”錯誤,可以忽略。
# make
# make install
#執行完make install後,在/etc/或cmake指定目錄下就有my.cnf,但是很簡潔,需要從support-files下復制一個。
四、配置my.cnf
#注意,my.cnf復制路徑是根據-DSYSCONFDIR=路徑值決定,如未設定,默認是/tmp/mysql.sock
cp support-files/my-huge.cnf /etc/my.cnf
# vi /etc/my.cnf
--------------------------------
(在mysqld下方加入3條參數)
basedir=/usr/local/mysql
datadir=/mysqldata
skip-name-resolve #此參數務必加,否則遠程連接會很慢。
--------------------------------
mysql目錄下的supports-files有幾個配置適合:
1、my-small.cnf 內存小於64M適用。
2、my-medium.cnf 內存小於128M且mysql必須與其它服務共享系統資源時。
3、my-large.cnf 內存小於512M且MYSQL做為主服務時。
4、my-huge.cnf 內存有1~2G且mysql做為主服務時。
5、my-innodb-heavy-4G.cnf 內存4G以上,且主要使用innodb,並且連接數不多但查詢較為復雜時。
五、目錄權限設置:
# 權限設置要在下步服務啟動前先執行,否則可能出現The server quit without updating PID file (/mysqldata/centos62.pid) 的錯誤提示
chown -R mysql.mysql /usr/local/mysql /var/lib/mysql
【關於權限設置的說明:最佳權限是chown -R root.mysql /usr/local/mysql ,但是如果data和mysql.sock是放在這個目錄下,則要把/usr/local/mysql 自身(不含下面的文件及目錄)以及/usr/local/mysql/data目錄設成啟動用戶所有,如chown -R mysql.mysql /usr/local/mysql/data,chown mysql.mysql /usr/local/mysql,這樣mysql.sock可以寫到這個目錄(否則服務啟動時將失敗),data文件也可以用mysql用戶寫入,但其它文件的所有者均為root 】
六、定制啟動服務及服務啟動權限
# 以下服務名可自定,如cp復制並改名為mysqld也可,這樣chkconfig也要chkconfig mysqld on
# 復制mysql.server.sh或mysql.server均可,二者內容一樣。
# 如:cp support-files/mysql.server.sh /etc/init.d/mysql,則下面服務名全部用mysql
cp support-files/mysql.server.sh /etc/init.d/mysqld --復制後默認是-rw-r--r--
chkconfig --add mysqld -- 增加 mysqld 為系統服務
#或chkconfig --level 235 mysqld on -- 自定 mysqld 自動啟動級別。
// chkconfig mysqld on 這裡可不先啟動,以免和下面的mysqld_safe --user=mysql &沖突
chmod 700 /etc/init.d/mysqld -- 權限設定, 或chmod u+x /etc/init.d/mysqld
/etc/init.d/mysqld start 或 service mysqld start
#netstat -nat命令將可以看到3306端口已打開。
七、初始化數據庫:在數據目錄下創建系統數據庫和系統表。
#注意要先切換到/usr/local/mysql目錄下,不是在安裝目錄/usr/local/src/mysql-5.5.20下。
cd /usr/local/mysql
./scripts/mysql_install_db \
--datadir=/mysqldata \
--user=mysql \
--basedir=/usr/local/mysql
** --user表示這些庫和表的所有者為mysql。cmake未指定basedir則此處可不設
[注意]mysql_install_db執行要在安裝目錄頂層執行./scripts/mysql_install_db,而不是進入scripts目錄後執行./mysql_install_db,
如果以服務器的root角色執行,則安裝的庫將是root所有,需要再修改所有者和組。
八、啟動 Mysql : /usr/local/mysql/bin下。
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 可能會停著不動,按回車就會回到shell
<注>mysqld_safe比mysqld增加了一些安全特性,可以在出現錯誤時重新啟動MYSQL服務器,並提供了完善的日志信息。如果沒有特殊要求,一般使用mysqld_safe而不是mysqld來啟動MYSQL服務器。
九、修改管理員密碼
bin/mysqladmin -u root password 'password1'
或:
bin/mysqladmin -uroot password '123456' -S /usr/local/mysql/mysql.sock
如果mysql用戶可以用於日常維護,還要同樣方法設置mysql的密碼。
十、設置/usr/bin下的軟鏈接:以便以後不需要路徑直接登錄。
cd /usr/bin
ln -s /usr/local/mysql/bin/mysql mysql
ln -s /usr/local/mysql/bin/mysqladmin mysqladmin
....其它同樣
chmod 700 -R /usr/local/mysql/bin/
或者不用設置軟鏈接,直接:export PATH=$PATH:/usr/local/mysql/bin
十一、把man文件添加到man page中:
#vi /etc/man.config
在:
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
下面添加一行:
MANPATH /usr/local/mysql/man