一、准备工作
在安装之前,需要准备软件,下面地址需要下载软件。
1. mysql 源码,http://dev.mysql.com/downloads/mysql/ 。选择版本--- Source Code 如图:
选择Source Code后,下面会有很多选择。选择图中所选中的下载。
2. mysql5.7 需要boost的支持,所以需要下载boost 下载地址:https://sourceforge.net/projects/boost/files/boost/ 我选择的是1.59.0这个版本。
3. mysql5.7的安装和编译需要cmake的支持。所以需要下载cmake.下载地址:https://cmake.org/download/ 我选择的版本3.5.1。
目前需要下载的软件都准备好了。
4. 关于LINUX的安装,我是使用VM虚拟机,安装的CENTOS6.7 64位。在安装时,选择的最小安装。
二、开始安装
1. 第一要安装cmake软件,tar xf cmake-3.5.1.tar.gz 解压后。进入cmake目录,直接编译./configure 。如果你的CENTOS安装的时候和我选择的一样,那么你会遇到一问题就是没有C++。使用yum安装C++ 。yum install gcc-c++ 命令运行完成后。再进行编译./configure 就不会出错了。运行成功后,会输出一段文字' now run gmake ' ,按他说的做,输入gmake命令。马上就运行完了。这个时候,直接运行 make && make install
2. 在安装MYSQL之前,需要boost的支持,所以解压tar xf boost_1_59_0.tar.gz 解压完成后,将运行命令 mv boost_1_59_0 /usr/local/boost 这样就不用管了,我们后面会用得到。
3. 安装mysql5.7 第一件事,还是要解压。 解压后,进入目录 ,输入以下命令
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
简单解释上面代码。最上面三行所指定的路径,是你想要把MYSQL安装的位置。其中-DMYSQL_DATADIR是数据文件位置。
最下面两行,-DDOWNLOAD_BOOST=1-DWITH_BOOST=/usr/local/boost 就是指定boost,如果不指定会出错。在5.5版本中不需要。5.7需要。5.6没试。
执行命令--大约有几分钟时间。
建mysql组和用户
groupadd mysql;
useradd mysql -g mysql -M -s /sbin/nologin
完成后运行,make && make install 。
如果您的机器运行速度慢,可能要等很久。虚拟机一般都不快。
三、初始化、启动运行
mysql在以前版本中,是没有密码的。但在5.7中,初始化完成后,是有密码的。初始化有这么几个步骤。
1. 复制mysql配制文件。此步如果省略,服务定不能启动。把mysql源码目录中support-files/my-default.cnf文件替换到/etc/my.cnf
2. 复制mysql启动shell 。把mysql源码目录中support-file/mysql.server 文件复制到/etc/init.d/mysqld
3. 5.7的初始化与之前差别比较大。在这只介绍5.7
查看mysql安装目录中是否有data目录(上面命令中指定data目录),如果没有,需要新建data目录
mkdir data;
chown mysql.mysql data;
进入mysql安装目录的bin目录。输入命令 ./mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql (之前是mysql_install_db,5.7已经不建议使用了。)
运行时会出一些[warning],这些不用管,初始化成功后,一个一个解决。关键看有没有类似如下图的输出,如果有,说明成功。否则,失败。
后面是密码。
4. 启动mysql /etc/init.d/mysqld start 正常情况下。启动成功。
5. 进入mysql。mysql -u root -p 回车。
把上面的密码输入。就可以进入mysql了。
此时,在没有修改密码之前,是不让操作的。所以需要下面命令来修改密码。
set password=password('新密码');
alter user 'root'@'localhost' password expire never;
flush privileges;
6. 做一些简单安全习惯操作。
删除mysql.user表里user列为空的数据。
删除mysql.user表里host列为IPV6的数据。
四、注意
1. 如果没有把mysql的配制文件覆盖/etc/my.cnf文件,会提示相关PID文件没有权限,或不能操作的错误。
2. 如果在cmake的时候,没有加这两句话。-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost 会提示需要boost支持。
3. 在安装cmake之前,需要C++的支持。
五、声明
写此文档,纯性记录自己学习过程,如有不详或误导之处,还请大牛指出。谢谢。