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

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

1. 获取源码

可以在以下页面找到

下载后,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。请从下面页面查找下载链接:

如果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系统中,可以通过adduser和addgroup命令来添加用户和用户组:

$ 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

添加开机启动服务

使用chkconfig将mysqld添加为开机自启动服务:

$ 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';