源码编译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/

# 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++

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

# 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

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

# tar zxvf cmake-2.8.4.tar.gz  
# cd cmake-2.8.4  
# ./configure  
# make  
# make install

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

         

5.安装ncurses

下载地址:http://www.gnu.org/software/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
     


附:

关于重新编译问题:

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



  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值