http://mirrors.sohu.com/mysql


安装前工作:
1,从官方网址下载MySQL5.7.11源码包,大概49M
2,安装好CentOS6.5 64位操作系统。建议update操作系统,以便是此版本最新的
3. yum -y install  gcc gcc-c++ autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake  libaio libaio-devel autoconf bzr bison libtool   make cmake  gcc-c++ bison ncurses-devel  //这是个人在安装老版本使用的,相关依赖包

软件放在/data

正式安装MySQL
1. 添加MySQL用户和所属组
    groupadd mysql
    useradd -r -g mysql mysql


2. 解压源码包 

   mkdir /data

chmod 755 /data

   cd /data

    wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.11.tar.gz
    tar -zxvf mysql-5.7.11.tar.gz


3. 开始踩MySQL的坑
    设置好make编译的目录   

cd mysql-5.7.11

cmake \
-DCMAKE_INSTALL_PREFIX=/data/mysql \              // 安装根目录
-DMYSQL_DATADIR=/mysql/data \                        //数据库存储路径

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \           //这个最好换成 /data 下
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/data/boost_1_59_0           //需要boost支持,这一点跟5.6版本的不一样

 

-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.7.11
到这里cmake完成,比较顺利              

cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_DATADIR=/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/data/boost_1_59_0

 

 


5. make 操作
# make    //漫长的过程 主要看机器的配置

 

Linking CXX executable my_safe_process
[100%] Built target my_safe_process

 

 

注意:
mysql 5.6.19 版本编译后的文件包约2G   // 笔者一直使用的是5.6.19及以上版本
MySQL5.7.11 编译安装对磁盘的需求也比以往的版本多很多,make之后的 mysql-5.7.11 文件夹约4.8G
开始编译前

# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root   27G  4.5G   21G  19% /

tmpfs                         996M  228K  996M   1% /dev/shm

/dev/sda1                     485M   39M  421M   9% /boot

 

编译完成后:

# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root   27G  9.5G   16G  38% /

tmpfs                         996M  228K  996M   1% /dev/shm

/dev/sda1                     485M   39M  421M   9% /boot

 

 

 

此时如果执行make install 会因为磁盘不足,导致缺失重要的文件,笔者,尝试过几次,均失败。 最后的报错如下:
-- Installing: /usr/local/mysql/bin/mysql_embedded
CMake Error at libmysqld/examples/cmake_installNaNake:42 (FILE):
  file INSTALL cannot copy file
  "/root/mysql-5.7.11/libmysqld/examples/mysql_embedded" to
  "/usr/local/mysql/bin/mysql_embedded".
Call Stack (most recent call first):
  cmake_installNaNake:116 (INCLUDE)
make: *** [install] Error 1


并且5.7.11的安装文件也比以往略大
5.6.19  ---->1.1G
5.7.11  ---->1.9G 
所以建议大家尽量给多一点空间

 

 

6. make install 安装:
# make install      从最后一行看到密码?
........

-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server

 

 

7. 初始化MySQL

cd /data/mysql/bin

./mysqld --initialize   --user=mysql --datadir=/data/mysql/data --basedir=/data/mysql --socket=/tmp/mysql.sock     //在MySQL 5.7.6版本以前是 bin/mysql_install_db  --user
2016-02-25T04:36:27.941245Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-02-25T04:36:29.363359Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-02-25T04:36:29.529261Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-02-25T04:36:29.615486Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 56a9ad19-db79-11e5-bc10-080027207e2e.
2016-02-25T04:36:29.635578Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-02-25T04:36:29.645190Z 1 [Note] A temporary password is generated for root@localhost: oej<ibtee2r?

 

 

8. 添加MySQL服务

cd /data/mysql-5.7.11/support-files

 

# cp mysql.server /etc/init.d/mysqld
cd /etc/init.d/

chmod +x mysqld

 

chmod  a+wrx /tmp         //给socket 存储文件 写的权限

 

 

9. 编辑my.cnf文件
# vi /etc/my.cnf              //添加下面的,这里为了简洁,省去其他的,都是按照默认的    注释掉以前的
[mysqld]
port=3306
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock

 

 

[mysqld]

port=3306

basedir=/data/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

init_connect='set autocommit=0'

#datadir=/var/lib/mysql

#socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

#symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

 

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

 

#

# include all files from the config directory

#

 

 

10. 重启MySQL

chown mysql.mysql /data/mysql/

 

# /etc/init.d/mysqld restart
Starting MySQL.. SUCCESS! 

 

chkconfig mysqld on

 

如果有报错可以删除/data/mysql/data下的

ib_logfile1  ib_logfile0

 

rm  ib_logfile0     

Y

 

再次启动

 

ps -ef|grep mysqld 

 

 

11. 登录MySQL


# cd /data/mysql/bin

# ./mysql -uroot -p               //第一次登录MySQL,密码文件在,也可以从make install 最后的一行看到密码
Enter password: 

 

这边忘记mysql的密码了  方法:

vi /etc/my.cnf    #编辑文件,找到[mysqld],在下面添加一行skip-grant-tables

[mysqld]

skip-grant-tables

:wq!  #保存退出

service mysqld restart  #重启MySQL服务

cd /data/mysql/bin

./mysql  -u root -p  #直接按回车,这时不需要输入root密码。

 

use mysql

update user set authentication_string=PASSWORD('123456') where User='root';

flush privileges;  #刷新系统授权表

grant all on *.* to 'root'@'localhost' identified by '123456' with grant option;

 

vi /etc/my.cnf   编辑文件,找到[mysqld],删除skip-grant-tables这一行

:wq!  #保存退出

 

service mysqld restart    #重启mysql,这个时候mysql的root密码已经修改为123456

 

mysql -uroot -p  #进入mysql控制台

123456 #输入密码

 

 

 

mysql> show  warnings;
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                            //下面提示我那种方法以后将会被遗弃                                |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | 'SET PASSWORD = PASSWORD('')' is deprecated and will be removed in a future release. Please use SET PASSWORD = '' instead |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

结束!