Linux 之源码编译安装 MySQL 5.5
MySQL 2014-01-08 2653
操作系统:CentOS 5.6(32位,最小化安装)
MySQL 安装版本 5.5.13
MySQL 从 5.5 版本开始,通过 ./configure 进行编译配置方式已经被取消,取而代之的是 cmake 工具。
因此,我们首先要在系统中源码编译安装cmake工具。

1. 安装cmake
  # wget http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz
  # tar zxvf cmake-2.8.12.tar.gz
  # cd cmake-2.8.12

  # ./configure --prefix=/usr/local/cmake
  # make && make install

2. 确保以下所需系统软件包已经被安装
  通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
  gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool*
  如果缺少相关的软件包,可通过yum -y install 的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh 的方式安装。

3. 安装前的系统设置
  // 建立 mysql 安装目录及数据存放目录
  # mkdir /usr/local/mysql  // 安装文件目录
  # mkdir /data/mysql/log  // 二进制日志目录,主从同步用
  # mkdir /data/mysql/data  // 数据库数据目录

  // 创建用户和用户组
  # groupadd mysql
  # useradd -M -s /sbin/nologin -g mysql mysql

  // 赋予数据存放目录权限
  # chown mysql:mysql -R /data/mysql/log
  # chown mysql:mysql -R /data/mysql/data

4. 从configure更换为cmake
  相信大多数人都已经习惯了之前的configure方式,并且所使用的参数也是比较个性化的,换成cmake之后,这一方面会带来不少的麻烦。
  还好,MySQL的官方网站提供了二者的参数对照表,我们可以尽可能的保留之前的参数,来编译配置新的MySQL版本。
  configure 与 cmake 参数对照指南:http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide

5. 编译安装 MySQL 5.5.13
  通过 http://www.mysql.com/downloads/mysql 官方网址或国内的sohu镜像下载软件包。

  # wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.38.tar.gz
  # tar zxvf mysql-5.5.38.tar.gz
  # cd mysql-5.5.38

  # cmake \
   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  // 指定MySQL程序的安装目录
   -DMYSQL_DATADIR=/data/mysql/data \  // 数据文件目录
   -DDEFAULT_CHARSET=utf8 \  // 指定服务器默认字符集
   -DDEFAULT_COLLATION=utf8_general_ci \  // 指定服务器默认的校对规则
   -DENABLED_LOCAL_INFILE=ON \  // 指定是否允许本地执行 LOAD DATA INFILE
   -DWITH_INNOBASE_STORAGE_ENGINE=1  // 指定静态编译到 MySQL 的存储引擎:INNODB
   -DMYSQL_USER=mysql  // MySQL 用户名

  # make
  # make install

  在 make 与 make install 的时候可以看到进度百分比,感觉这一点要比 configure 方式要好。

6. 配置并初始化数据库
  创建 my.cnf 配置文件
  # mkdir /var/log/mysql
  # mkdir /var/run/mysql

  # chown mysql:mysql -R /var/log/mysql
  # chown mysql:mysql -R /var/run/mysql

  # cp support-files/my-medium.cnf /etc/my.cnf  // MySQL 默认配置文件路径
  如果是MySQL 5.6,由于没有 my-medium.cnf,配置内容请参考:/uploads/attachs/201512/17/12222898745.txt

  设置 my.cnf 配置文件
  注释 log-bin = mysql-bin 或修改为 log-bin = /data/mysql/log/mysql-bin  // 如果没有使用主从同步建议注释掉

  执行前需赋给scripts/mysql_install_db文件执行权限
  # chmod 755 scripts/mysql_install_db
  # scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

  复制生成 Mysql 服务器的自动与停止脚本
  # cp support-files/mysql.server /etc/init.d/mysql

  将 Mysql 服务添加到服务器管理中,并设置自启动状态:
  #chkconfig --list | grep mysql  // 查询当前是否有mysql服务
  #chkconfig --add mysql  // 添加mysql服务到服务器管理中
  #chkconfig --list | grep mysql  // 查询此时mysql服务器的启动状态
  #chkconfig --level 35 mysql on  // 设置在3、5运行级别也自启动

  启动MySQL
  #service mysql start 或 #/etc/init.d/mysql start
  如果启动失败修改 mysql 权限:#chmod 755 /etc/init.d/mysql

  测试 Mysql 服务器
  #/usr/local/mysql/bin/mysqladmin version  // 测试服务器是否已启动
  #/usr/local/mysql/bin/mysqladmin pin  // 出现:mysql is alive

  通过命令行登录管理MySQL服务器(提示输入密码时直接回车):
  # /usr/local/mysql/bin/mysql -u root -p

  为root帐户设置初始密码
  # /usr/local/mysql/bin/mysqladmin -u root password $NEW-PASSWORD

  删除本机匿名连接的空密码帐号
  /usr/local/mysql/bin/mysql -uroot -p$NEW-PASSWORD
  mysql>USE mysql;  // 选择系统数据库mysql
  mysql>SELECT Host,User,Password FROM user;  // 查看所有用户
  mysql>DELETE FROM user WHERE password="";
  mysql>flush privileges;
  mysql>SELECT Host,User,Password FROM user;  // 确认密码为空的用户是否已全部删除
  mysql>exit;