源碼編譯mysql 5.5+ 安裝過程全記錄


前言:從mysql 5.5版本開始,mysql源碼安裝開始使用cmake了,編譯安裝跟以前的版本有點不一樣了。

一,安裝步驟:

    1.安裝前准備工作

       a.下載mysql源代碼包,到mysql下載頁面選擇MYSQL Community Serve Source Code 版本

          注意:不要選擇Linux-Generic版本,此版本為已經編譯好的二進制版本

       b.檢查本機Linux是否已安裝好make,bison,cmake,gcc-c++,ncurses,如果尚未安裝,先安裝以上包,安裝方法如下:

         注意:一般系統都會默認安裝有make,gcc-c++.

         1.安裝make編譯器

            下載地址:http://www.gnu.org/software/make/

[plain]  view plain  copy
 
  1. # tar zxvf make-3.82.tar.gz    
  2. # cd make-3.82    
  3. # ./configure    
  4. # make    
  5. # make install   

            也可用:yum install make.i686 安裝此包

        

       2.安裝bison

          下載地址:http://www.gnu.org/software/bison/      

[plain]  view plain  copy
 
  1. <span style="font-size:13px;"># tar zxvf bison-2.5.tar.gz    
  2. # cd bison-2.5    
  3. # ./configure    
  4. # make    
  5. # make install </span>  

        也可用:yum install bison.i686 安裝此包
         

3.安裝gcc-c++

下載地址:http://www.gnu.org/software/gcc

 

[plain]  view plain  copy
 
  1. # tar zxvf gcc-c++-4.4.4.tar.gz    
  2. # cd gcc-c++-4.4.4    
  3. # ./configure    
  4. # make    
  5. # make install  

            也可用:yum install gcc-c++.i686 安裝此包

4.安裝cmake

下載地址:http://www.cmake.org/

[plain]  view plain  copy
 
  1. # tar zxvf cmake-2.8.4.tar.gz    
  2. # cd cmake-2.8.4    
  3. # ./configure    
  4. # make    
  5. # make install  

              也可用:yum install  cmake.i686 安裝此包

         

5.安裝ncurses

下載地址:http://www.gnu.org/software/ncurses/

 

[plain]  view plain  copy
 
  1. # tar zxvf ncurses-5.8.tar.gz    
  2. # cd ncurses-5.8    
  3. # ./configure    
  4. # make    
  5. # make install  

           也可用:yum install ncurses.i686 安裝此包

         2.添加mysql用戶與組

[plain]  view plain  copy
 
  1. #groupadd mysql  
  2. #useradd -g mysql -s /sbin/nologin -M mysql  

         3.mysql的源碼編譯

[plain]  view plain  copy
 
  1. #tar zxvf mysql-5.5.13.tar.gz  
  2. #cd mysql-5.5.13  
  3. #rm CMakeCache.txt  
  4. #cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/  -DMYSQL_DATADIR=/usr/local/mysql55/data  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DMYSQL_TCP_PORT=3306  -DMYSQL_UNIX_ADDR=/usr/local/mysql55/data/mysql.sock  -DMYSQL_USER=mysql  -DWITH_DEBUG=0  
  5. #make   
  6. #make install  

       4.編譯完成后,安裝數據庫

[plain]  view plain  copy
 
  1. # cd /usr/local/mysql    
  2. # chown -R mysql .    
  3. # chgrp -R mysql .    
  4. # scripts/mysql_install_db --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  
  5. # chown -R root .   
  6. # chown -R mysql ./data  

          某次安裝完數據庫完后,啟動不了數據庫,查看日志顯示:Can't open the mysql.plugin table...2009-06-01 00:52Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

解決方法:重新執行數據庫安裝過程,並帶上   

 

[html]  view plain  copy
 
  1. --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  
於是搞定

 

 

   5.下面的命令是可選的,將mysql的配置文件拷貝到/etc      

cp support-files/my-medium.cnf /etc/my.cnf

如果原來的/etc目錄下有my.cnf文件,則一定要用編譯安裝的my.cnf替換掉系統默認的my..cnf,否則會報如下錯誤:

 

[html]  view plain  copy
 
  1. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist  
  2. 120406 23:57:45 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.  
  3. 120406 23:57:45 InnoDB: The InnoDB memory heap is disabled  
  4. 120406 23:57:45 InnoDB: Mutexes and rw_locks use GCC atomic builtins  
  5. 120406 23:57:45 InnoDB: Compressed tables use zlib 1.2.3  
  6. 120406 23:57:45 InnoDB: Initializing buffer pool, size = 128.0M  
  7. 120406 23:57:45 InnoDB: Completed initialization of buffer pool  
  8. InnoDB: The first specified data file ./ibdata1 did not exist:  
  9. InnoDB: a new database to be created!  
  10. 120406 23:57:45  InnoDB: Setting file ./ibdata1 size to 10 MB  
  11. InnoDB: Database physically writes the file full: wait...  
  12. 120406 23:57:45  InnoDB: Log file ./ib_logfile0 did not exist: new to be created  
  13. InnoDB: Setting log file ./ib_logfile0 size to 5 MB  
  14. InnoDB: Database physically writes the file full: wait...  
  15. 120406 23:57:45  InnoDB: Log file ./ib_logfile1 did not exist: new to be created  
  16. InnoDB: Setting log file ./ib_logfile1 size to 5 MB  
  17. InnoDB: Database physically writes the file full: wait...  
  18. InnoDB: Doublewrite buffer not found: creating new  
  19. InnoDB: Doublewrite buffer created  
  20. InnoDB: 127 rollback segment(s) active.  
  21. InnoDB: Creating foreign key constraint system tables  
  22. InnoDB: Foreign key constraint system tables created  
  23. 120406 23:57:46  InnoDB: Waiting for the background threads to start  
  24. 120406 23:57:47 InnoDB: 1.1.8 started; log sequence number 0  
  25. 120406 23:57:47 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)  
  26. 120406 23:57:47 [ERROR] Can't start server: can't create PID file: No such file or directory  
  27. 120406 23:57:47 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended  


 

 

       6.啟動mysql:       

[plain]  view plain  copy
 
  1. # bin/mysqld_safe --user=mysql &    
  2. # #啟動mysql,看是否成功    
  3. # netstat -tnl|grep 3306  
  4. # 或者  
  5. # ps -aux|grep 'mysql'  

   可選步驟:設置root 密碼:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'  

此步驟需要在數據庫啟動之后才能執行成功

  7.配置自啟動

[plain]  view plain  copy
 
  1. # cp support-files/mysql.server /etc/init.d/mysqld  
  2. # chmod +x /etc/init.d/mysqld  
  3. # chkconfig –add mysqld  

      或者這樣啟動:    

[plain]  view plain  copy
 
  1. # #將mysql的啟動服務添加到系統服務中    
  2. # cp support-files/mysql.server /etc/init.d/mysql.server    
  3. # #現在可以使用下面的命令啟動mysql    
  4. # service mysql.server start    
  5. # #停止mysql服務    
  6. # service mysql.server stop    
  7. # #重啟mysql服務    
  8. # service mysql.server restart   

8

為了方便,將mysql 的bin目錄加到PATH中
export PATH=/usr/local/mysql/bin:$PATH
      

 

 

附:

 

關於重新編譯問題:

Dealing with Problems Compiling MySQL

The solution to many problems involves reconfiguring. If you do reconfigure, take note of the following:

  • If CMake is run after it has previously been run,it may use information that was gathered during its previousinvocation. This information is stored inCMakeCache.txt. WhenCMakestarts up, it looks for that file and reads its contents if it exists,on the assumption that the information is still correct. Thatassumption is invalid when you reconfigure.
  • Each time you run CMake, you must run makeagain to recompile. However, you may want to remove old object filesfrom previous builds first because they were compiled using differentconfiguration options.

To prevent old object files or configuration information from being used, run these commands on Unix before re-runningCMake:

shell> make clean
shell> rm CMakeCache.txt



版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM