一、环境准备:
我尝试过以下环境都是能成功的:
1、CentOS6.4 minimal镜像最小化缺省安装;
2、RedHat6.4 DVD基本服务器安装;
3、RedHat5.4 DVD基本服务器安装;
4、其他Linux版本未验证。
注意系统安装好之后需要配置好网卡,关闭防火墙及SELINUX:
2 |
# chkconfig iptables off |
4 |
# vim /etc/sysconfig/selinux |
修改完成后,保存并退出,然后重启系统。
二、先使用 yum -y update 指令升级系统到最新版本。
如果服务器在内网,此步骤可略过。
三、做一些准备工作(以下Linux命令均在su到root用户操作):
1、新增mysql用户组
2、新增mysql用户
1 |
# useradd -r -g mysql mysql |
3、新建数据库执行文件目录(后面会把编译好的mysql程序安装到这个目录)
1 |
# mkdir -p /usr/local/mysql |
4、新建数据库数据文件目录
2 |
# mkdir -p /home/mysql/data |
3 |
# mkdir -p /home/mysql/logs |
4 |
# mkdir -p /home/mysql/temp |
注意:上面的第3及第4是为了以后将MySQL的数据文件与执行程序文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本!
5、编辑PATH搜索路径
3 |
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH |
使PATH搜索路径立即生效:
6、编辑hosts文件,增加一行,加入本机IP和主机名
7、安装编译源码所需的工具和库(如果不能在线安装,需要提前配置好本地源,本地源配置方法度娘吧,以后有时间)
1 |
# yum -y install wget gcc-c++ ncurses-devel cmake make perl |
注意:RedHat5.4源中没有cmake,可以手动编译安装cmake,或者升级到RedHat5.9之后再从源中yum安装cmake。
8、通过FTP或SFTP将mysql-5.6.12.tar.gz源码包上传到/usr/local/src路径下。
如果服务器能上网,也可以通过wget下载mysql-5.6.12.tar.gz。下载地址如下:
2 |
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz/from/http://cdn.mysql.com/ |
四、开始编译安装mysql-5.6.12
1、进入源码压缩包下载目录
2、解压缩源码包
1 |
# tar -zxvf mysql-5.6.12.tar.gz |
3、进入解压缩源码目录
4、使用cmake源码安装mysql(如果你打算安装到不同的路径,注意修改下面语句中/usr/local/mysql这个路径!)
2 |
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ |
3 |
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ |
4 |
-DDEFAULT_CHARSET=utf8 \ |
5 |
-DDEFAULT_COLLATION=utf8_general_ci \ |
6 |
-DWITH_MYISAM_STORAGE_ENGINE=1 \ |
7 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ |
8 |
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ |
9 |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ |
10 |
-DWITH_MEMORY_STORAGE_ENGINE=1 \ |
12 |
-DENABLED_LOCAL_INFILE=1 \ |
13 |
-DMYSQL_DATADIR=/home/mysql/data \ |
15 |
-DMYSQL_TCP_PORT=3306 \ |
上面的这些复制完,回车,然后就开始cmake的过程,一般时间不会很长。
5、cmake结束后开始编译源码,这一步时间会较长,请耐心等待。
6、安装编译好的程序
注意:如果需要重装mysql,在/usr/local/src/mysql-5.6.12在执行下make install就可以了,不需要再cmake和make
7、清除安装临时文件
8、修改目录拥有者
1 |
# chown -Rf mysql:mysql /usr/local/mysql |
2 |
# chown -Rf mysql:mysql /home/mysql |
9、进入mysql执行程序的安装路径
10、执行初始化配置脚本,创建系统自带的数据库和表(注意路径/home/mysql/data需要换成你自定定义的数据库存放路径)
1 |
# scripts/mysql_install_db --user=mysql --datadir=/home/mysql/data |
#初始化脚本在/usr/local/mysql/下生成了配置文件my.cnf,需要更改该配置文件的所有者:
1 |
# 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操作如下:
1 |
# mv /etc/my.cnf /etc/my.cnf.bak |
2 |
# 当然也可以删除掉/etc/my.cnf这个文件: |
(3)如果你需要用于生产环境,不要急着做下面的mysql启动操作。建议把上一步骤中mysql初始化生成的/usr/local/mysql/mysql.cnf删除,然后把你优化好的mysql配置文件my.cnf放到/etc下。(这是我做mysql主从复制和mysql优化的经验!)
11、复制服务启动脚本
1 |
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql |
12、启动MySQL服务
13、设置开机自动启动服务
14、登录并修改MySQL用户root的密码
3 |
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456"; |
4 |
mysql> update user set Password = password('123456') where User='root'; |
5 |
mysql> flush privileges; |
15、检测下上一步MySQL用户root密码是否生效:
1 |
[root@yimiju etc]# mysql -u root |
2 |
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)——没有密码无法登录,说明密码修改成功了。 |
3 |
[root@yimiju ~]# mysql -u root -p |
4 |
Enter password: ——这里提示时输入你设置的mysql root帐号密码 |
6 |
Welcome to the MySQL monitor. Commands end with ; or \g. |
7 |
Your MySQL connection id is 422 |
8 |
Server version: 5.6.12-log Source distribution |
9 |
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
10 |
Oracle is a registered trademark of Oracle Corporation and/or its |
11 |
affiliates. Other names may be trademarks of their respective |
13 |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. |
16、(可选)运行安全设置脚本,强烈建议生产服务器使用:
1 |
[root@yimiju ~]# /usr/local/mysql/bin/mysql_secure_installation |
3 |
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL |
4 |
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! |
6 |
In order to log into MySQL to secure it, we'll need the current |
7 |
password for the root user. If you've just installed MySQL, and |
8 |
you haven't set the root password yet, the password will be blank, |
9 |
so you should just press enter here. |
11 |
Enter current password for root (enter for none): |
12 |
OK, successfully used password, moving on... |
14 |
Setting the root password ensures that nobody can log into the MySQL |
15 |
root user without the proper authorisation. |
17 |
You already have a root password set, so you can safely answer 'n'. |
19 |
Change the root password? [Y/n] n ---------------这里输入n |
22 |
By default, a MySQL installation has an anonymous user, allowing anyone |
23 |
to log into MySQL without having to have a user account created for |
24 |
them. This is intended only for testing, and to make the installation |
25 |
go a bit smoother. You should remove them before moving into a |
26 |
production environment. |
28 |
Remove anonymous users? [Y/n] Y ---------------这里输入Y |
31 |
Normally, root should only be allowed to connect from 'localhost'. This |
32 |
ensures that someone cannot guess at the root password from the network. |
34 |
Disallow root login remotely? [Y/n] n ---------------这里输入n |
37 |
By default, MySQL comes with a database named 'test' that anyone can |
38 |
access. This is also intended only for testing, and should be removed |
39 |
before moving into a production environment. |
41 |
Remove test database and access to it? [Y/n] Y ---------------这里输入Y |
42 |
- Dropping test database... |
43 |
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist |
44 |
... Failed! Not critical, keep moving... |
45 |
- Removing privileges on test database... |
48 |
Reloading the privilege tables will ensure that all changes made so far |
49 |
will take effect immediately. |
51 |
Reload privilege tables now? [Y/n] Y ---------------这里输入Y |
54 |
All done! If you've completed all of the above steps, your MySQL |
55 |
installation should now be secure. |
57 |
Thanks for using MySQL! |
17、重启服务器,检测mysql是否能开机自动启动
1 |
[root@yimiju ~]# reboot |