mashuaimama

Linux下源码编译方式安装MySQL5.5.12(转)

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之前版本源码编译安装方式,可以参数三思之前的文章:Linux下源码编译安装MySQL5.1

http://www.5ienet.com/note/html/stmysql51/index.shtml

  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)

竣工!

 周末会用RPM包安装Mysql,那个没多少挑战性,毕竟是Redhat提供的软件管理包,于是今天利用工作空余,学习了下如何利用源码安装,并对源码进行简单的修改。
        第一,先去网上下载几个文件,其实发现Linux下的软件去网上下载比Windows软件下载要简单多,也可靠多。Mysql源码包、Cmake包、bison包分别如何。下载好之后保存到/usr/local/src/目录下。

http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.11.tar.gz/from/http://mysql.he.net/

http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

http://ftp.gnu.org/gnu/bison/bison-2.4.3.tar.gz

     第二,安装CMake。CMake很有可能成为今后Linux下软件编译的主流。
cd /usr/local/src
tar zxvf cmake-2.8.4.tar.gz
cd cmake-2.8.4
./bootstrap
gmake
gmake install
cd ../

tar zxvf bison-2.4.3.tar.gz
cd bison-2.4.3
./configure
make
make install

cd ../

     第三,安装Mysql。可以参考目录下的手册,相关过程描述见文档,这里我直接上相关命令。

/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar xvf mysql-5.5.11.tar.gz
cd mysql-5.5.11/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_USER=mysql
make
make install

chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

mkdir -p /data/mysql/
mkdir -p /data/mysql/data/
mkdir -p /data/mysql/log/
chown -R mysql:mysql /data/mysql/

cd support-files/
cp my-large.cnf /data/mysql/my.cnf
cp mysql.server /etc/init.d/mysqld

     第四,配置启动项
     1、修改配置文件my.cnf如果需要的话。
     2、Mysql初始化DB安装
/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/data/mysql/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/data/mysql/data \
--user=mysql
     3、mysql加入开机引导
chmod +x /etc/init.d/mysqld
vi /etc/init.d/mysqld (编辑此文件,查找并修改以下变量内容:)
basedir=/usr/local/mysql
datadir=/data/mysql/data

chkconfig --add mysqld
chkconfig --level 345 mysqld on
     4、启动Mysql服务  service mysqld start
     用netstat -nat命令将可以看到3306端口已打开。接下来就客户端连接。在/usr/local/mysql/bin/mysql进行连接。也可以将mysql加入到系统命令中,这样就不用每次进到目录进行运行了。
     总结:1、通过此过程修改了部分代码,第一次说明“提领类型双关的指针将破坏强重叠规则”,并就此编译错误进行了学习和理解,算是一种新的经验积累吧。
     2、有志者事竟成,只有坚持才能慢慢学好Linux的很多知识。Linux虽然跟Windows是一样是一个操作系统软件,但是Linux之所以难,之所 以有意思,完全在于它的开源,因此通过一行行命令的实战,才能慢慢学好Linux。也明白了以前为什么有人说用Linux的客户端界面,还不如用 Windows一说了。

  

转载请注明出处:http://hi.baidu.com/braveboyx/blog/item/f20404cc506f642fb700c8a7.html

分类:

技术点:

相关文章: