前话

使用yum安装 , 在我看来步骤太多,太麻烦.使用编译安装个人认为是最简单的,知道可以很容易把mysql跑起来.


步骤

  1. 检测是否已经存在mysql ,如果存在:卸载
  2. 安装编译环境中需要的基本包
  3. 下载mysql 源码&解压
  4. 编译
  5. 配置
  6. 可能遇到的问题
  7. 扩展阅读


1. 检测mysql


rpm -qa | grep mysql
如果有的话 , 执行以下命令卸载
rpm -e mysql   //普通删除模式
rpm -e --nodeps mysql    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除


2. 安装编译环境中需要的基本包

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel


3. 下载mysql 源码


进入 mysql 5.6 下载地址 , 找到 "mysql-5.6.xx.tar.gz" , 我目前下载的是5.6.28

# 下载
wget ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.6/mysql-5.6.28.tar.gz
#解压
tar zxvf mysql-5.6.28.tar.gz 
#进入mysql目录
cd mysql-5.6.28


4. 编译


#设置编译参数
#以下内容其实是一句 , 由于写了注释 ,所以使用\分成多行,便于理解.在使用时, 改成自己需要的后请将注释删除执行.(保留斜杠)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data   \   #数据文件存放位置
-DSYSCONFDIR=/etc                       \   #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1          \   #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1        \   #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1          \   #支持Memory引擎
-DWITH_READLINE=1                       \   #快捷键功能(我没用过)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock      \   #连接数据库socket路径
-DMYSQL_TCP_PORT=3306                   \   #端口
-DENABLED_LOCAL_INFILE=1                \   #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1       \   #安装支持数据库分区
-DEXTRA_CHARSETS=all                    \   #安装所有的字符集
-DDEFAULT_CHARSET=utf8                  \   #默认字符
-DDEFAULT_COLLATION=utf8_general_ci


# 编译&安装
make && make install


5. 配置

查看是否有mysql用户/用户组

cat /etc/passwd 查看用户列表
cat /etc/group  查看用户组列表

没有 , 就创建

groupadd mysql
useradd -g mysql mysql

修改/usr/local/mysql权限

chown -R mysql:mysql /usr/local/mysql

初始化配置 , 初始化配置脚本,创建系统自带的数据库和表

cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

添加mysql服务并设置自启

cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start  --启动MySQL

设置环境变量

#编译环境变量文件
vim /etc/profile
#追加mysql 环境变量
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
#保存并退出 ,生效环境变量
source /etc/profile

为root用户设置新密码

mysql
UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';
# 刷新权限
FLUSH PRIVILEGES;

开启远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;


6. 可能遇到的问题

Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/AY1404111053020733e2Z.pid). 

#解决办法 : 
    修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录

ERROR 2002 (HY000): Can\'t connect to local MySQL server through socket '/tmp/mysql.sock' (2)   
#解决办法 : 
    新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。   
    1. ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock   
    2. /usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock


7. 扩展阅读

  1. CentOS 6.4下编译安装MySQL 5.6.14
  2. CentOS6.5下编译安装MySQL 5.6.16
  3. mysql cmake 参数

tips : 此文主要参考扩展阅读的1,2 . 发布在此处主要加深理解以及后期直接方便阅读.