前言:從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/
- # tar zxvf make-3.82.tar.gz
- # cd make-3.82
- # ./configure
- # make
- # make install
也可用:yum install make.i686 安裝此包
2.安裝bison
下載地址:http://www.gnu.org/software/bison/
- <span style="font-size:13px;"># tar zxvf bison-2.5.tar.gz
- # cd bison-2.5
- # ./configure
- # make
- # make install </span>
也可用:yum install bison.i686 安裝此包
3.安裝gcc-c++
- # tar zxvf gcc-c++-4.4.4.tar.gz
- # cd gcc-c++-4.4.4
- # ./configure
- # make
- # make install
也可用:yum install gcc-c++.i686 安裝此包
4.安裝cmake
- # tar zxvf cmake-2.8.4.tar.gz
- # cd cmake-2.8.4
- # ./configure
- # make
- # make install
也可用:yum install cmake.i686 安裝此包
5.安裝ncurses
- # tar zxvf ncurses-5.8.tar.gz
- # cd ncurses-5.8
- # ./configure
- # make
- # make install
也可用:yum install ncurses.i686 安裝此包
2.添加mysql用戶與組
- #groupadd mysql
- #useradd -g mysql -s /sbin/nologin -M mysql
3.mysql的源碼編譯
- #tar zxvf mysql-5.5.13.tar.gz
- #cd mysql-5.5.13
- #rm CMakeCache.txt
- #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
- #make
- #make install
4.編譯完成后,安裝數據庫
- # cd /usr/local/mysql
- # chown -R mysql .
- # chgrp -R mysql .
- # scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
- # chown -R root .
- # 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.
解決方法:重新執行數據庫安裝過程,並帶上
- --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,否則會報如下錯誤:
- /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist
- 120406 23:57:45 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
- 120406 23:57:45 InnoDB: The InnoDB memory heap is disabled
- 120406 23:57:45 InnoDB: Mutexes and rw_locks use GCC atomic builtins
- 120406 23:57:45 InnoDB: Compressed tables use zlib 1.2.3
- 120406 23:57:45 InnoDB: Initializing buffer pool, size = 128.0M
- 120406 23:57:45 InnoDB: Completed initialization of buffer pool
- InnoDB: The first specified data file ./ibdata1 did not exist:
- InnoDB: a new database to be created!
- 120406 23:57:45 InnoDB: Setting file ./ibdata1 size to 10 MB
- InnoDB: Database physically writes the file full: wait...
- 120406 23:57:45 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
- InnoDB: Setting log file ./ib_logfile0 size to 5 MB
- InnoDB: Database physically writes the file full: wait...
- 120406 23:57:45 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
- InnoDB: Setting log file ./ib_logfile1 size to 5 MB
- InnoDB: Database physically writes the file full: wait...
- InnoDB: Doublewrite buffer not found: creating new
- InnoDB: Doublewrite buffer created
- InnoDB: 127 rollback segment(s) active.
- InnoDB: Creating foreign key constraint system tables
- InnoDB: Foreign key constraint system tables created
- 120406 23:57:46 InnoDB: Waiting for the background threads to start
- 120406 23:57:47 InnoDB: 1.1.8 started; log sequence number 0
- 120406 23:57:47 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)
- 120406 23:57:47 [ERROR] Can't start server: can't create PID file: No such file or directory
- 120406 23:57:47 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
6.啟動mysql:
- # bin/mysqld_safe --user=mysql &
- # #啟動mysql,看是否成功
- # netstat -tnl|grep 3306
- # 或者
- # 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.配置自啟動
- # cp support-files/mysql.server /etc/init.d/mysqld
- # chmod +x /etc/init.d/mysqld
- # chkconfig –add mysqld
或者這樣啟動:
- # #將mysql的啟動服務添加到系統服務中
- # cp support-files/mysql.server /etc/init.d/mysql.server
- # #現在可以使用下面的命令啟動mysql
- # service mysql.server start
- # #停止mysql服務
- # service mysql.server stop
- # #重啟mysql服務
- # service mysql.server restart
8
為了方便,將mysql 的bin目錄加到PATH中 export PATH=/usr/local/mysql/bin:$PATH
附:
關於重新編譯問題:
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 in
CMakeCache.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