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