Linux 源码编译安装MySQL 5.7

 2016年10月30日    1339     声明


MySQL可以通过Yum或其它安装包快速安装,也可以下载源代码编译安装。从源代码编译安装MySQL有一些好处,如可以指定编译生成参数、优化编译、指定安装位置等。

从标准的发行源码安装MySQL分为以下步骤:

  1. 获取源码
  2. 配置、编译、安装
  3. 配置MySQL

1. 获取源码

可以在以下页面找到

http://dev.mysql.com/downloads/mysql/

下载后,MySQL的源文件被打包为.tar.gz.zip格式。在本例中,我下载的源代码文件为'mysql-5.7.16.tar.gz'

可以使用tar命令解压文件:

$ tar zxvf mysql-5.7.16.tar.gz


2. 配置、编译、安装

解压后进入源码目录:

$ cd mysql-5.7.16

配置源码

使用cmake命令配置源码。以下是一个未指定任何参数的最小化配置:

$ cmake .

注意:在MySQL 5.7中,指定CMake作为构建所有平台的框架。在编译安装MySQL前,应确保系统中已安装2.6.3以上版本的CMake程序。在CentOS中,使用yum命令安装即可:

$ yum install cmake

如果出现以下错误:

CMake Error at cmake/readline.cmake:64 (MESSAGE):
  Curses library not found.  Please install appropriate package

请首先安装ncurses-devel

$ rm -f CMakeCache.txt
$ yum -y install ncurses-devel

另外,构建MySQL依赖于Boost C++库,应确保系统中已安装Boost 1.59.0。请从下面页面查找下载链接:

https://sourceforge.net/projects/boost/files/boost/1.59.0/

如果cmake构建时出现以下错误,请先下载Boost C++

CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

下载后,将Boost 1.59.0解压到/usr/local目录,并使用以下命令重新构建:

$ cmake . -DWITH_BOOST=/usr/local/boost_1_59_0

源码编译

cmake构建成功后,使用make命令编译源码:

$ make

注意:源码编译时间较长,请耐心等待。

安装

编译成功后,使用make install命令安装MySQL:

$ make install

编译安装时,MySQL的默认安装目录为/usr/local/mysql。如果需要修改安装目录,请在安装时指定DESTDIR参数,如:

$ make install DESTDIR="/opt/mysql"

安装完成后,可以通过mysql -V命令验证安装是否成功:

$ mysql -V
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper


3. 配置MySQL

编译安装MySQL后,我们还需要对MySQL进行一些设置。如:设置配置文件、创建核心数据库、启动MySQL服务器等。

3.1 创建mysql用户和用户组

运行MySQL的mysqld需要一个用户和用户组。在Linux系统中,可以通过adduseraddgroup命令来添加用户和用户组:

$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql


3.2 初始化数据目录

MySQL安装后,初始化数据目录,数据目录用于存放MySQL数据库的表。使用Yum源安装或其它安装包安装的MySQL,会自动创建数据目录。而通过二进制和源代码编译安装的MySQL,需要手工初始化数据目录。

切换工具目录

切换到MySQL的安装目录,一般是/usr/local/mysql /usr/local

$ cd /usr/local/mysql

创建一个目录,将secure_file_priv中系统变量的进出口操作限制到该目录。

$ mkdir mysql-files
$ chmod 750 mysql-files

修改目录权限

为确保mysql用户有对安装目录的操作权限,需要修改安装目录下所有文件及目录的所有者及所属用户组:

$ chown -R mysql .
$ chgrp -R mysql .

初始化数据目录

全新安装的MySQL还需要初始化数据目录,而升级安装不需要。

在MySQL 5.7.6之后,使用服务器来初始化目录:

$ bin/mysqld --initialize --user=mysql

通过mysqld初始化data目录时,如果使用--initialize选项,则会为'root'@'localhost'用户创建一个随机密码。该密码会打印在控制台,如下所示行中末尾就是临时密码:

2016-10-30T03:23:35.425735Z 1 [Note] A temporary password is generated for root@localhost: 3=1ienulLq>a

如果希望使用一个空的初始密码,请使用 --initialize-insecure选项进行初始化。

而在MySQL 5.7.6之前,使用mysql_install_db初始化:

$ bin/mysql_install_db --user=mysql

支持安装链接

如果希望服务器能够支持安全连接,则使用mysql_ssl_rsa_setup程序来创建默认的SSL和RSA文件:

$ mysql_ssl_rsa_setup

指定配置文件

如果要为MySQL服务器指定启动选项,可以通过/etc/my.cnf/etc/mysql/my.cnf文件指定。如果不指定,会使用默认配置。安装路径的support-files目录下有一个默认的配置文件,将其复制到/etc目录下:

$ cp support-files/my-default.cnf /etc/my.cnf


3.3 启动MySQL

创建mysqld

support-files目录下有一个mysql.server,可以通过该文件启动MySQL服务器./support-files/mysql.server start。更常用的是将MySQL配置为系统服务,首先将其复制到/etc/init.d/目录并重命名为mysqld

$ cp support-files/mysql.server /etc/init.d/mysqld

添加开机启动服务

使用chkconfigmysqld添加为开机自启动服务:

$ chkconfig --add mysqld

检查添加是否成功:

$ chkconfig --list mysqld
mysqld         	0:关闭	1:关闭	2:启用	3:启用	4:启用	5:启用	6:关闭

启动MySQL服务器

添加为系统服务后,就可以通过service命令来启动MySQL服务器:

$ service mysqld start

检查启动是否成功:

$ netstat -anp|grep mysqld
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      17307/mysqld        
unix  2      [ ACC ]     STREAM     LISTENING     831113 17307/mysqld        /tmp/mysql.sock

登录及修改密码

在前面的步骤中,我们为'root'@'localhost'创建了一个临时密码,使用这个密码登录:

$ mysql -u root -p 

如果出现以下错误,是因为运行文件路径不一致:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

可以建立一个软链接:

$ ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

登录成功后,使用以下命令修改用户密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';