天天看點

Linux從入門到精通之源碼編譯安裝 MySQL

1.安裝cmake

MySQL從5.5版本開始,通過./configure進行編譯配置方式已經被取消,取而代之的是cmake工具。

是以,我們首先要在系統中源碼編譯安裝cmake工具。

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

#tarzxvfcmake-2.8.4.tar.gz

#cdcmake-2.8.4

#./configure

#make

#makeinstall

2.確定以下所需系統軟體包已經被安裝

通過rpm-qa|grepname的方式驗證以下軟體包是否已全部安裝。

gcc*gcc-c++*autoconf*automake*zlib*libxml*ncurses-devel*libgcrypt*libtool*

如果缺少相關的軟體包,可通過yum-yinstall的方式線上安裝,或直接從系統安裝CD光牒中找到并通過rpm-ivh的方式安裝。

3.安裝前的系統設定

建立mysql安裝目錄及資料存放目錄

#mkdir/opt/mysql

#mkdir/opt/mysql/data

建立使用者和使用者組

#groupaddmysql

#useradd-gmysqlmysql

賦予資料存放目錄權限

#chownmysql:mysql-R/opt/mysql/data

4.從configure更換為cmake

我相信大多數人都已經習慣了之前的configure方式,并且所使用的參數也是比較個性化的,換成cmake之後,這一方面會帶來不少的麻煩。

還好,MySQL的官方網站提供了二者的參數對照表,我們可以盡可能的保留之前的參數,來編譯配置新的MySQL版本。

configure與cmake參數對照指南:

<a href="http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide" target="_blank">http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide</a>

以我自己為例,之前我一直使用的參數為:

./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.編譯安裝MySQL5.5.x

通過http://www.mysql.com/downloads/mysql官方網址或國内的sohu鏡像下載下傳軟體包,如目前最新的MySQL5.5.13。

#wgethttp://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.13.tar.gz

#tarzxvfmysql-5.5.13.tar.gz

#cdmysql-5.5.13

#cmake-DCMAKE_INSTALL_PREFIX=/opt/mysql\

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

6.配置并初始化資料庫

建立my.cnf配置檔案

#mkdir/opt/mysql/log

#mkdir/opt/mysql/etc

#cpsupport-files/my-medium.cnf/opt/mysql/etc/my.cnf

初始化資料庫

執行前需賦給scripts/mysql_install_db檔案執行權限

#chmod755scripts/mysql_install_db

#scripts/mysql_install_db--user=mysql--basedir=/opt/mysql/--datadir=/opt/mysql/data/

建立管理MySQL資料庫的shell腳本

#mkdir/opt/mysql/init.d

#cpsupport-files/mysql.server/opt/mysql/init.d/mysql

賦予shell腳本可執行權限:

#chmod+x/opt/mysql/init.d/mysql

啟動MySQL:

#/opt/mysql/init.d/mysqlstart

通過指令行登入管理MySQL伺服器(提示輸入密碼時直接回車):

#/opt/mysql/bin/mysql-uroot-p-S/tmp/mysql.sock

輸入以下SQL語句,建立一個具有root權限的使用者(admin)和密碼(12345678):

GRANTALLPRIVILEGESON*.*TO'admin'@'localhost'IDENTIFIEDBY'12345678';

GRANTALLPRIVILEGESON*.*TO'admin'@'127.0.0.1'IDENTIFIEDBY'12345678';

為root帳戶設定初始密碼

#/opt/mysql/bin/mysqladmin-urootpassword'new-password'

删除本機匿名連接配接的空密碼帳号

/opt/mysql/bin/mysql-uroot-p'new-password'

mysql&gt;usemysql;//選擇系統資料庫mysql

mysql&gt;selectHost,User,Passwordfromuser;//檢視所有使用者

mysql&gt;deletefromuserwherepassword="";

mysql&gt;flushprivileges;

mysql&gt;selectHost,User,Passwordfromuser;//确認密碼為空的使用者是否已全部删除

mysql&gt;exit;

本文轉自Devin 51CTO部落格,原文連結:http://blog.51cto.com/devingeng/1300895