一、环境准备:
我尝试过以下环境都是能成功的:
1、CentOS6.7 minimal镜像最小化缺省安装;
2、RedHat6.5 DVD基本服务器安装;
3、其他Linux版本未验证。
注意系统安装好之后需要配置好网卡,关闭防火墙及SELINUX:
# 关闭Linux防火墙命令
# chkconfig iptables off
# 修改SELINUX配置
# vim /etc/sysconfig/selinux
SELINUX=enforcing
修改为:
SELINUX=disabled
修改完成后,保存并退出,然后重启系统。
二、升级系统:
先使用 yum -y update 指令升级系统到最新版本。
如果服务器在内网,此步骤可略过。
三、做一些准备工作(以下Linux命令均在su到root用户操作):
1、新增MySQL用户组
# groupadd mysql
2、新增mysql用户
# useradd -r -g mysql mysql
3、新建数据库执行文件目录(后面会把编译好的mysql程序安装到这个目录)
# mkdir -p /usr/local/mysql
4、新建数据库数据文件目录
# mkdir -p /home/mysql
# mkdir -p /home/mysql/data
# mkdir -p /home/mysql/logs
# mkdir -p /home/mysql/temp
注意:上面的第3及第4是为了以后将MySQL的数据文件与执行程序文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本!
5、编辑PATH搜索路径
# vi /etc/profile +
# 在profile文件末尾增加两行
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
使PATH搜索路径立即生效:
# source /etc/profile
6、编辑hosts文件,增加一行,加入本机IP和主机名(需要根据实际情况修改IP和主机名)
# vi /etc/hosts +
192.168.1.2 linuxidc
7、安装编译源码所需的工具和库(如果不能在线安装,需要提前配置好本地源,本地源配置方法度娘吧,以后有时间)
# yum -y install wget gcc-c++ ncurses-devel cmake make perl
注意:如果是RedHat5.4,其ISO源中没有cmake,可以手动编译安装cmake,或者升级到RedHat5.9之后再从源中yum安装cmake。
8、通过FTP或SFTP将mysql-5.7.9.tar.gz源码包上传到/usr/local/src路径下。
如果服务器能上网,也可以通过wget下载mysql-5.7.9.tar.gz。下载地址如下:
# cd /usr/local/src
# wget
四、开始编译安装mysql-5.7.9:
1、进入源码压缩包下载目录
# cd /usr/local/src
2、解压缩源码包
# tar -zxvf mysql-5.7.9.tar.gz
3、进入解压缩源码目录
# cd mysql-5.7.9
4、使用cmake源码安装mysql(如果你打算安装到不同的路径,注意修改下面语句中/usr/local/mysql这个路径!)
#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1
上面的这些复制完,回车,然后就开始cmake的过程,一般时间不会很长。
5、cmake结束后开始编译源码,这一步时间会较长,请耐心等待。
# make
6、安装编译好的程序
# make install
注意:如果需要重装mysql,在/usr/local/src/mysql-5.7.9在执行下make install就可以了,不需要再cmake和make
7、清除安装临时文件
# make clean
8、修改目录拥有者
# chown -Rf mysql:mysql /usr/local/mysql
# chown -Rf mysql:mysql /home/mysql
9、进入mysql执行程序的安装路径
# cd /usr/local/mysql
10、执行初始化配置脚本,创建系统自带的数据库和表(注意路径/home/mysql/data需要换成你自定定义的数据库存放路径)
# scripts/mysql_install_db --user=mysql --datadir=/home/mysql/data
#初始化脚本在/usr/local/mysql/下生成了配置文件my.cnf,需要更改该配置文件的所有者:
# chown -Rf mysql:mysql /usr/local/mysql
注意:
(1)Tips:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索mysql程序目录下是否有my.cnf";
(2)需要注意CentOS 6.4版操作系统的最小安装完成后,即使没有安装mysql,在/etc目录下也会存在一个my.cnf文件,建议将此文件更名为其他的名字,否则该文件 会干扰源码安装的MySQL的正确配置,造成无法启动。修改/etc/my.cnf操作如下:
# mv /etc/my.cnf /etc/my.cnf.bak
# 当然也可以删除掉/etc/my.cnf这个文件:
# rm /etc/my.cnf
(3)如果你需要用于生产环境,不要急着做下面的mysql启动操作。建议把上一步骤中mysql初始化生成的/usr/local/mysql /mysql.cnf删除,然后把你优化好的mysql配置文件my.cnf放到/etc下。(这是我做mysql主从复制和mysql优化的经验!)
11、复制服务启动脚本
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
12、启动MySQL服务
# service mysql start
13、设置开机自动启动服务
# chkconfig mysql on
14、登录并修改MySQL用户root的密码
# mysql -u root
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
mysql> update user set Password = password('123456') where User='root';
mysql> flush privileges;
mysql> exit;
15、检测下上一步MySQL用户root密码是否生效:
[root@linuxidc etc]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)——没有密码无法登录,说明密码修改成功了。
[root@linuxidc ~]# mysql -u root -p
Enter password: ——这里提示时输入你设置的mysql root帐号密码
#登录成功有如下提示:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 422
Server version: 5.7.9-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
16、(可选)运行安全设置脚本,强烈建议生产服务器使用:
[root@linuxidc ~]# /usr/local/mysql/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!