Linux/Redhat源碼編譯安裝mysql5.5教程

來源:互聯網
上載者:User

一、源碼編譯安裝mysql5.5.2

作業系統:Redhat Enterprise Linux 6.2

1. 建立使用者、目錄和修改許可權

# mkdir -p /usr/local/mysql/data
# groupadd mysql
# useradd -g mysql mysql
# chown -R mysql.mysql /usr/local/mysql/data/

2. 安裝所需相關庫檔案

# yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake

3. 解壓mysql-5.5.27.tar.gz

# cd /home/software/
# tar -zxvf mysql-5.5.27.tar.gz

4. 編譯安裝

# cd mysql-5.5.27
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
# make && make install
# cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf

5. 初始化資料庫

# cd /usr/local/mysql/
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

6. 設定開機啟動

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig mysqld on

7. 添加環境變數

# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
# source /etc/profile
8. 啟動mysql服務
# /etc/init.d/mysqld start

9. 裝完後修改mysql密碼和遠端存取

# mysql -u root -p
Enter password:       預設無密碼,直接斷行符號
mysql>use mysql;
mysql> update user set password=password("123456");  //修改密碼
mysql> update user set `host` = '%' where `user` = 'root' limit 1;   //修改可遠端存取
mysql > exit  //退出

10. 重啟mysql服務

# /etc/init.d/mysqld restart

二,源碼編譯安裝mysql-5.5.36


首先是安裝cmake環境。因為博主測試機是ubuntu,所以直接用apt-get install cmake命令來安裝,yum相信應該也一樣。或者可以編譯安裝,步驟如下。


wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tarx zvfc cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2
 ./configure
make && make install

安裝完成後執行cmake -version,確定已經正確安裝。

然後下載mysql最新源碼包,編譯安裝。


wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
tar xzvf mysql-5.5.36.tar.gz
cd mysql-5.5.36
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql
make && make install

這裡博主遇到一個有關ssl的錯誤,提示資訊如下所示。

Linking C shared module adt_null.so
[ 65%] Built target audit_null
Scanning dependencies of target vio
[ 65%] Building C object vio/CMakeFiles/vio.dir/vio.c.o
[ 65%] Building C object vio/CMakeFiles/vio.dir/viosocket.c.o
[ 65%] Building C object vio/CMakeFiles/vio.dir/viossl.c.o
/root/mysql-5.5.36/vio/viossl.c: In function ‘ssl_do’:
/root/mysql-5.5.36/vio/viossl.c:175: error: ‘SSL_OP_NO_COMPRESSION’ undeclared (first use in this function)
/root/mysql-5.5.36/vio/viossl.c:175: error: (Each undeclared identifier is reported only once
/root/mysql-5.5.36/vio/viossl.c:175: error: for each function it appears in.)
make[2]: *** [vio/CMakeFiles/vio.dir/viossl.c.o] Error 1
make[1]: *** [vio/CMakeFiles/vio.dir/all] Error 2
make: *** [all] Error 2

最後發現這個問題的原因是mysql5.5無法在openssl-1.0.0及更低版本下編譯導致的。如果不需要ssl可以去掉WITH_SSL配置項,也可以升級openssl的版本,另外更方便的方法可以在cmake之前打一個補丁。


wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
tar xzvf mysql-5.5.36.tar.gz
cd mysql-5.5.36
wget -c "http://bugs.mysql.com/file.php?id=19941&bug_id=68999" -O mysql-openssl.patch
patch -p1 < span > mysql-openssl.patch

最後複製設定檔、修改。


cp support-files/my-medium.cnf /etc/my.cnf
sed '/skip-external-locking/i\datadir = /data/mysql' -i /etc/my.cnf
sed -i 's:#innodb:innodb:g' /etc/my.cnf
sed -i 's:/usr/local/mysql/data:/data/mysql:g' /etc/my.cnf

啟動mysql,成功!

三,源碼編譯安裝MySQL5.6.16

mysql5.6.16的安裝和之前的5.5、5.1有些不同,編譯的時候不再使用./configure來進行了,使用了cmake命令來進行編譯項目。

準備編譯環境

因為我的Linux是剛安裝的,需要安裝很多的必要程式。


yum -y install make gcc-c++ cmake bison-devel  ncurses-devel gcc \
       autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*
下載MySQL

進入http://dev.mysql.com/downloads/mysql/ 的source/Generic Linux (Architecture Independent), Compressed TAR Archive,檔案mysql-5.6.16.tar.gz。

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz
tar xvf mysql-5.6.16.tar.gz
cd mysql-5.6.16

編譯源碼

接下來組織項目


cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
注意,這個cmake是替代以前的./configure 步驟。如果你需要更多的參數,請參考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html。

有時候會出現類似的問題。

Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
— If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80
使用參數-DENABLE_DOWNLOADS=1 自動下載。
有網路限制,設定http代理export http_proxy=http://example.com:80。環境變數http_proxy 也為 curl 等其他工具所用。儘管 yum 可以識別大寫或小寫 http_proxy,但curl 要求環境變數的名稱是小寫。
如果這個cmake這個步驟有出現問題,解決後重新再cmake一次。如果輸出類似這樣,那麼就好了。


-- Running cmake version 2.6.4
-- MySQL 5.6.16
-- Packaging as: mysql-5.6.16-Linux-x86_64
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- Using cmake version 2.6.4
-- Not building NDB
-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- GMOCK_SOURCE_DIR:/root/mysql-5.6.16/source_downloads/gmock-1.6.0
-- GTEST_LIBRARIES:gmock;gtest
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.6.16
接著編譯源碼

make && make install

編譯時間緩慢,等待中…

修改檔案許可權,產生資料庫


groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/mysql
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql --ldata=/data/mysql/data
chown -R root .
chown -R mysql data
說明:參數--ldata說明你的資料檔案存放的目錄,如果你使用預設的路徑,那麼這個參數可以去除。如果你不增加此參數,但是在設定檔(見下方的datadir配置)中指定了其他的目錄,那麼會在啟動MySQL的時候出現類似的提示:

Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/data/VM_208.pid).
出現這個的解決辦法就是增加--ldata參數,指定和設定檔中datadir相同的值,重新執行mysql_install_db即可。

設定設定檔

MySQL 5.6.8開始,就不在分發my.cnf等配置的demo,所以想隨便拿一個用都比較麻煩。

my.cnf的設定檔的預設讀取順序為
File Name(上面的優先) Purpose
/etc/my.cnf Global options
/etc/mysql/my.cnf Global options
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options
defaults-extra-file The file specified with --defaults-extra-file=path, if any
~/.my.cnf User-specific options
~/.mylogin.cnf Login path options
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8

[mysqld]
port=3306
bind-address=127.0.0.1
basedir=/usr/local/mysql
datadir=/data/data/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

############# default settings ################
# time zone
default-time-zone = system
character-set-server = utf8
default-storage-engine = InnoDB

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我的這個配置比較簡單,聲明一下常用的變數,如果你需要對效能最佳化,那麼你需要細細研讀一下設定檔。

啟動MySQL,開機自動啟動設定

手動啟動MySQL。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
/etc/init.d/mysql start
##或者
service mysql start

在上面的步驟後,開機自動啟動設定


chkconfig --add mysql

##有的系統需要下面的

chkconfig --level 345 mysql on
可以參考:http://dev.mysql.com/doc/refman/5.6/en/automatic-start.html

修改root密碼

預設的密碼是空的,很危險,需要修改一下。

在此之前,為方便調用mysql,我們先產生一個mysql的軟鏈。


ln -s /usr/local/mysql/bin/mysql /usr/bin/
然後修改密碼


mysql -uroot  -h127.0.0.1 -p
mysql> SET PASSWORD = PASSWORD('123456');
將來如果你忘記了root密碼,可以參考重設MySQL密碼。

通過上面的步驟,就可以使用MySQL資料庫了,另外可以為mysql安裝phpmyadmin作為前端的管理介面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.