源碼編譯安裝 MySQL 5.5.x 實踐

1.安裝cmake
MySQL從5.5版本開始,通過./configure進行編譯配置方式已經被取消,取而代之的是cmake工具。
因此,我們首先要在系統中源碼編譯安裝cmake工具。


# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz


# tar zxvf cmake-2.8.4.tar.gz


# cd cmake-2.8.4


# ./configure
# make
# make install


2.確保以下所需系統軟件包已經被安裝
通過 rpm -qa | grep name 的方式驗證以下軟件包是否已全部安裝。
gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool*


如果缺少相關的軟件包,可通過yum -y install 的方式在線安裝,或直接從系統安裝光盤中找到並通過rpm -ivh 的方式安裝。


3. 安裝前的系統設置
建立mysql安裝目錄及數據存放目錄
# mkdir /opt/mysql
# mkdir /opt/mysql/data


創建用戶和用戶組
# groupadd mysql
# useradd -g mysql mysql


賦予數據存放目錄權限
# chown mysql:mysql -R /opt/mysql/data


4.從configure更換爲cmake
我相信大多數人都已經習慣了之前的configure方式,並且所使用的參數也是比較個性化的,換成cmake之後,這一方面會帶來不少的麻煩。
還好,MySQL的官方網站提供了二者的參數對照表,我們可以儘可能的保留之前的參數,來編譯配置新的MySQL版本。


configure 與 cmake 參數對照指南:
http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide


以我自己爲例,之前我一直使用的參數爲:
./configure --prefix=/opt/mysql/ \
--sysconfdir=/opt/mysql/etc \
--localstatedir=/opt/mysql/data \
--with-tcp-port=3306 \
--with-unix-socket-path=/tmp/mysqld.sock \
--with-mysqld-user=mysql \
--enable-assembler \
--with-extra-charsets=all \
--enable-thread-safe-client \
--with-big-tables \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile \
--with-plugins=partition,innobase,myisammrg


經過與cmake的參數對照之後,去除掉已經被取消的參數(大多數是因爲新版本已經默認啓用),cmake的參數配置如下:
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DSYSCONFDIR=/opt/mysql/etc \
-DMYSQL_DATADIR=/opt/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1


5.編譯安裝 MySQL 5.5.x
通過http://www.mysql.com/downloads/mysql官方網址或國內的sohu鏡像下載軟件包,如目前最新的MySQL 5.5.13。
# wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.13.tar.gz


# tar zxvf mysql-5.5.13.tar.gz


# cd mysql-5.5.13
# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DSYSCONFDIR=/opt/mysql/etc \
-DMYSQL_DATADIR=/opt/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1


# make
# make install


在make與make install的時候可以看到進度百分比,感覺這一點要比configure方式要好。


6.配置並初始化數據庫
創建my.cnf配置文件
# mkdir /opt/mysql/log


# mkdir /opt/mysql/etc
# cp support-files/my-medium.cnf /opt/mysql/etc/my.cnf


初始化數據庫
執行前需賦給scripts/mysql_install_db文件執行權限
# chmod 755 scripts/mysql_install_db
# scripts/mysql_install_db --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/


創建管理MySQL數據庫的shell腳本
# mkdir /opt/mysql/init.d
# cp support-files/mysql.server /opt/mysql/init.d/mysql


賦予shell腳本可執行權限:
# chmod +x /opt/mysql/init.d/mysql


啓動MySQL:
# /opt/mysql/init.d/mysql start


通過命令行登錄管理MySQL服務器(提示輸入密碼時直接回車):
# /opt/mysql/bin/mysql -u root -p -S /tmp/mysql.sock


輸入以下SQL語句,創建一個具有root權限的用戶(admin)和密碼(12345678):
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';


爲root帳戶設置初始密碼
# /opt/mysql/bin/mysqladmin -u root password 'new-password'


刪除本機匿名連接的空密碼帳號
/opt/mysql/bin/mysql -uroot -p'new-password'
mysql>use mysql; //選擇系統數據庫mysql
mysql>select Host,User,Password from user; //查看所有用戶
mysql>delete from user where password="";
mysql>flush privileges;
mysql>select Host,User,Password from user; //確認密碼爲空的用戶是否已全部刪除
mysql>exit;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章