Published on

MySQL 的编译安装

Authors

MySQL编译安装相对来讲比较简单,但是看到网上很多人安装的非常随便。我着这里主要讲解一下我惯用的安装方式,通常情况下,这样安装基本上不会出现什么问题,运行也比较稳定。我这里使用的MySQL的版本是 5.6.20,Linux的版本是CentOS6.6。

在安装之前,需要先规划好如何安装,一般情况下,我会把MySQL的数据目录放到逻辑卷的一个分区(关于逻辑卷如何使用,可以看我之前的博客)。编译安装MySQL之前,需要解决一些软件上的依赖关系。

直接安装MySQL编译安装所需要的软件环境。

yum -y install gcc gcc-c++ cmake bison ncurses-devel zlib zlib-devel libxml libxml-devel openssl openssl-devel dtrace

设定MySQL编译时的环境变量:

CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
CXX=g++
CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
export CFLAGS CXX CXXFLAGS

注意:如果是编译percona版本的MySQL,设置-fno-exceptions 可能无法编译成功。这是看报错的具体信息,直接去掉这个选项即可。

开始编译: 进入解压后的源码目录,执行:

cmake . \
> -DCMAKE_INSTALL_PREFIX=/app/mysql \
> -DMYSQL_DATADIR=/data/data_37520/data \
> -DSYSCONFDIR=/data/data_37520/config \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DMYSQL_UNIX_ADDR=/data/data_37520/mysql.sock \
> -DMYSQL_TCP_PORT=37520 \
> -DENABLED_LOCAL_INFILE=1 \
> -DWITH_PARTITION_STORAGE_ENGINE=1 \
> -DEXTRA_CHARSETS=all \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci
# (注:以上是我根据个人的具体环境而设置的选项,大家可以根据自己的环境来设置)

建立mysql系统用户和系统组,并给用户授权:

groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /data/data_37520 mysql
chown -R mysql:mysql /data/data_37520/

初始话数据库:

scripts/mysql_install_db --user=mysql --datadir=/data/data_37520/data

为数据库提供配置文件:

cp support-files/my-defaults.cnf  /data/data_37520/config/my.cnf

(注:可以根据情况自己修改配置文件的内容)

为MySQL提供主动启动的脚本:

cp support-files/mysql.scripts /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

给MySQL添加帮组手册: 编辑 /etc/man.config,添加如下内容即可:

MANPATH  /app/mysql/man

输出MySQL头文件的搜索路径:

ln -sfv /app/mysql/include /usr/include/mysql

输出MySQL库文件的路径:

echo '/app/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

ldconfig -v

修改PATH环境变量,让系统可以直接使用mysql的相关命令。 在/etc/profile.d/新建一个文件,可以任意命名,我这里就叫mysql,在该文件中添加:

export PATH=$PATH:/usr/local/mysql/bin

现在可以启动数据库了: 只需要运行:

service mysqld start

(注意删除数据库的匿名用户,设置管理员账户的密码)