Msyql升级到5.5版本之后,源码编译配置工具换成了CMake,编译方式及加载的参数较之以前都有不小的变化,本节以实战形式详尽描述RHEL5环境下,源码编译安装MySQL5.5的各个步骤。 

  工欲善其事,必先利其器。如果操作系统没有cmake命令,则需要首先编译安装cmake,这个工具安装比较简单,可以先到下列网址下载:http://www.cmake.org/cmake/resources/software.html,解压缩后make安装即可。

  MySQL的源码包可以到其官网下载:http://dev.mysql.com/downloads/mysql/5.5.html,目前最新版本为5.5.12GA。

  安装的详细操作步骤请看官们注意了,往下瞅~~

  首先创建专用帐户:

    shell> groupadd mysql

    shell> useradd -r -g mysql mysql

  解压缩MySQL安装包:

    [root@rhel5u3 software]# tar xvfz mysql-5.5.12.tar.gz

    [root@rhel5u3 software]# cd mysql-5.5.12

  接下来需要执行cmake命令进行配置。有过源码编译安装MySQL经验的朋友都知道,5.5之前版本编译时的参数众多,某些参数对性能也有相当影响,比如静态编译的选项等等。

  MySQL5.5版本中,编译的选项同样众多,DBA可以通过# cmake . -LH 查看支持的参数,或者浏览下列页面:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html,查看编译时可指定参数的详细描述。

  截略一些常用参数如下:

  • CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
  • DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
  • DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
  • ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF
  • WITH_COMMENT:指定编译备注信息
  • WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
  • WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎
  • SYSCONFDIR:初始化参数文件目录
  • MYSQL_DATADIR:数据文件目录
  • MYSQL_TCP_PORT:服务端口号,默认3306
  • MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock

  实际执行时指定的参数如下:

    [root@rhel5u3 mysql-5.5.12]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \

    >  -DDEFAULT_CHARSET=gbk \

    >  -DDEFAULT_COLLATION=gbk_chinese_ci \

    >  -DENABLED_LOCAL_INFILE=ON \

    >  -DWITH_INNOBASE_STORAGE_ENGINE=1 \

    >  -DWITH_FEDERATED_STORAGE_ENGINE=1 \

    >  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

    >  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

    >  -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \

    >  -DWITH_COMMENT="jss edition" \

    >  -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock \

    >  -DSYSCONFDIR=/data/mysqldata/3306

    ...........

    ...........

    -- The C compiler identification is GNU

    -- The CXX compiler identification is GNU

    -- Check for working C compiler: /usr/bin/gcc

    -- Check for working C compiler: /usr/bin/gcc -- works

  而后执行make命令进行编译操作:

    [root@rhel5u3 mysql-5.5.12]# make

    Scanning dependencies of target INFO_BIN

    [  0%] Built target INFO_BIN

    Scanning dependencies of target INFO_SRC

    ...........

    ...........

  执行make install命令安装程序到指定的路径:

    [root@rhel5u3 mysql-5.5.12]# make install

    [  0%] Built target INFO_BIN

    [  0%] Built target INFO_SRC

    [  0%] Built target abi_check

    ...........

    ...........

  如果前面操作没有碰到错误的话,编译及安装至此告以段落,接下来要对MySQL做些配置性工作,比如授予目录权限,创建数据等等。

  首先修改安装目录的所有者,执行命令如下:

    [root@rhel5u3 mysql-5.5.12]# cd /usr/local/mysql55

    [root@rhel5u3 mysql55]# chown -R mysql:mysql ./

  为将要创建的数据库做准备性工作,创建相关目录,并修改所有者:

    [root@rhel5u3 mysql55]# cd /data/mysqldata/3306

    [root@rhel5u3 3306]# mkdir data binlog tmp innodb_ts innodb_log

    [root@rhel5u3 3306]# chown -R mysql:mysql ./

    [root@rhel5u3 3306]# cd /usr/local/mysql55

  执行mysql_install_db命令创建数据库:

    [root@rhel5u3 mysql55]# scripts/mysql_install_db --user=mysql --datadir=/data/mysqldata/3306/data/

    Installing MySQL system tables...

    OK

    Filling help tables...

    OK

    To start mysqld at boot time you have to copy

    support-files/mysql.server to the right place for your system

    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

    To do so, start the server, then issue the following commands:

    ./bin/mysqladmin -u root password ¨new-password¨

    ./bin/mysqladmin -u root -h rhel5u3 password ¨new-password¨

    Alternatively you can run:

    ./bin/mysql_secure_installation

    which will also give you the option of removing the test

    databases and anonymous user created by default.  This is

    strongly recommended for production servers.

    See the manual for more instructions.

    You can start the MySQL daemon with:

    cd . ; ./bin/mysqld_safe &

    You can test the MySQL daemon with mysql-test-run.pl

    cd ./mysql-test ; perl mysql-test-run.pl

    Please report any problems with the ./bin/mysqlbug script!

复制初始化参数文件到适当的路径下,前面编译配置时已经指定了初始化参数文件默认路径为/data/mysqldata/3306,因此这里要将参数文件复制至该路径下,注意不要复制错了地方:

    [root@rhel5u3 mysql55]# cp support-files/my-medium.cnf /data/mysqldata/3306/my.cnf

vi编译my.cnf文件,添加下列的配置:

    datadir  = /data/mysqldata/3306/data

    tmpdir   = /data/mysqldata/3306/tmp

如果有必要的话,将innodb相关的参数注释去掉,并修改文件路径为正确的路径,然后就可以启动mysql了:

    [root@rhel5u3 mysql55]# /usr/local/mysql55/bin/mysqld_safe &

在启动时不需要附加--defaults-file参数指定参数文件的具体路径了。

通过mysqladmin命令修改管理员口令:

    [root@rhel5u3 mysql55]# /usr/local/mysql55/bin/mysqladmin -uroot password ¨123456¨ -S /data/mysqldata/3306/mysql.sock

登录数据库:

    [root@rhel5u3 mysql55]# /usr/local/mysql55/bin/mysql -uroot -p¨123456¨

    Welcome to the MySQL monitor.  Commands end with ; or \g.

    Your MySQL connection id is 2

    Server version: 5.5.12-log Source distribution

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its

    affiliates. Other names may be trademarks of their respective

    owners.

    Type ¨help;¨ or ¨\h¨ for help. Type ¨\c¨ to clear the current input statement.

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | mysql              |

    | performance_schema |

    | test               |

    +--------------------+

    4 rows in set (0.00 sec)

竣工!