一、环境准备:
我尝试过以下环境都是能成功的:
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。下载地址如下:
四、开始编译安装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 |