系统环境:CentOS 6.6 minimal 64位

MySQL免编译包:mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz

MySQL源码包:mysql-5.5.20.tar.gz

小弟今天一定要8一8这个系统环境,在小弟刚接触linux的时候,被我大天朝度娘娘娘坑的膝盖烂如泥,为啥?因为大家的系统环境都不一样啊,所以小弟以后但凡写文档必写第一行,免得历史长河中的悲剧一次一次又一次,重复重复再重复!1024!

一.免编译安装

 1.首先找个目录比如opt这种目录下载mysql安装包:

[root@localhost ~]# cd /opt

2.进去后,使用wget或者winscprz各种办法把tar包搞进目录下。

[root@localhost opt]# wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz

下载完之后,就会看到tar包了(图1

wKiom1VBBNWgnO0vAAByW49w8i8199.jpg

3.接下来解压这个tar

[root@localhost opt]# tar -zxvf mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz

4.解压完毕后,可以做ln也可以直接mv改名,我们mv/usr/local/mysq下去。

[root@localhost opt]# mv mysql-5.1.40-linux-x86_64-icc-glibc23 /usr/local/mysql

5.创建一个mysql用户

[root@localhost mysql]# useradd -s /sbin/nologin mysql

6.然后去创建一个mysql的数据存放目录

[root@localhost mysql]# mkdir -p /data/mysql 
(目录不是定死的,只要你记得住)

7.因为以后mysql肯定要对目录进行操作,那得有权限,所以就把新创建的目录给过一下户,顺便给刚才解压的tar过户。

[root@localhost /]# chown -R mysql:mysql /data/mysql/
[root@localhost local]# chown -R mysql:mysql /usr/local/mysql/

8.接下来需要初始化mysql

 

[root@localhost scripts]# ./mysql_install_db  --user=mysql --datadir=/data/mysql

这样执行必然会报错,看看报错信息吧!(图2

wKioL1VBBj3TkcZvAAGTmqPxs6M031.jpg

针对上图的解决方法,可以试试下面的命令(其中原因是什么我不清楚,求大神指点)

[root@localhost scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

当命令执行好之后,接下来会跳出另一个报错:(图3 

wKiom1VBBNbwUScaAAR2kkOdMiU465.jpg

不要惊慌鸡动,仔细看报错信息,说是找不到什么什么,那我就想到是不是少装东西了,那我TM怎么知道少了什么,然后上帝告诉我了:(图4

[root@localhost scripts]# yum install compat-libstdc++-33

wKioL1VBBj6iGbZtAAQ3TIZFm4U637.jpg

感谢上帝!

9.将support-files下的my-large.cnf替换etc/my.cnf

[root@localhost support-files]# cp my-large.cnf /etc/my.cnf 
cp:是否覆盖"/etc/my.cnf"? y

10.还要把mysql.server覆盖到etc/init.d/mysqld

[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld

11.Mysqld文件很重要我们要修改他的权限,不过好像复制过去直接是755了。

[root@localhost init.d]# chmod 755 mysqld

12.接下来我们要修改服务启动文件里面的参数了。

[root@localhost init.d]# vim /etc/init.d/mysqld

找到basedirdatadir,根据你的实际情况修改他们,别忘了改好wq

basedir=/usr/local/mysql
datadir=/data/mysql

13.添加mysql服务,并且开启mysql服务

[root@localhost init.d]# chkconfig --add mysqld
[root@localhost init.d]# chkconfig mysqld on

鸡动人心的时候到了,启动mysql服务

[root@localhost init.d]# service mysqld start
Starting MySQL. SUCCESS!

咱们测试一下是不是能进去,这里要注意一下,有的同学看网上教程直接mysql –u –p可能会提示命令找不到,心想日了狗了,因为我也遇到过啊,日他哥~,冷静下来一想,尼玛基础啊,系统默认去找/usr/bin/mysql请问你有么?,要没有咱们就老实的去/usr/local/mysql/bin下面运行吧你懂的,如果有傲娇一定要mysql直接可以运行,那就加PATH就是了,感谢上帝!(图5

wKiom1VBBNbSoXQ0AAF6u04jyg8836.jpg

你懂的~感谢上帝~~

 

 

二.源码包编译安装

 1.直入正题解压tar包

[root@localhost opt]# ll
总用量 23740
-rw-r--r-- 1 root root 24305842 5月  6 2015 mysql-5.5.20.tar.gz
[root@localhost opt]# tar -zxvf mysql-5.5.20.tar.gz
[root@localhost opt]# ll
总用量 23744
drwxr-xr-x 31 7161 wheel     4096 12月17 2011 mysql-5.5.20
-rw-r--r--  1 root root  24305842 5月  6 2015 mysql-5.5.20.tar.gz

 2.进入解压出来的mysql目录并对其进行编译

[root@localhost opt]# cd mysql-5.5.20
[root@localhost mysql-5.5.20]# pwd
/opt/mysql-5.5.20

接下来要进行cmake,因为我安装的是minimal,所以需要安装必要的工具,如下

值得一说的是,当我们yum安装之前我觉得你应该先list *gcc*而不只是list gcc* 你可以试验一下观察他#们的不同,从而再定夺,我是小白啊,所以*gcc*

[root@localhost mysql-5.5.20]# yum install *gcc*

装完不要嘚瑟,主角cmake还没上呢

[root@localhost mysql-5.5.20]# yum install cmake

接下来正式开始cmake

[root@localhost mysql-5.5.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=all \
-DWITH_DEBUG=0 \
-DWITH_SSL=yes \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1

加个连接里面有介绍各种参数和用法:

http://www.blogjava.net/kelly859/archive/2012/09/04/387005.html

别想着一次成功,办会报错的我们echo $? 结果=1,来看看什么错误:

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found.  Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev,
on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:118 (FIND_CURSES)
cmake/readline.cmake:214 (MYSQL_USE_BUNDLED_READLINE)
CMakeLists.txt:257 (MYSQL_CHECK_READLINE)
-- Configuring incomplete, errors occurred!
See also "/opt/mysql-5.5.20/CMakeFiles/CMakeOutput.log".
See also "/opt/mysql-5.5.20/CMakeFiles/CMakeError.log".

说没有找到Curses,然后往下看说如果是红帽系列的话那需要安装ncurses-devel,咱们继续装

[root@localhost mysql-5.5.20]# yum install ncurses-devel.x86_64

装完我们重新cmake一次,你会发现还是报错,而且报错和之前一样,解决办法是删除CMakeCache.txt

[root@localhost mysql-5.5.20]# rm -rf CMakeCache.txt

再重新cmake一次,你会发现成功了,echo $? ==0  ,不要在意那些warning,cmake通过

接下来make ,make install    我喜欢分开来执行哈哈......

 

3.配置mysql直到世界尽头

创建mysql组创建mysql用户,创建mysql的data目录(这个目录是活的而且是根据你之前cmake的之后指定的datadir而定所以mkdir只作为大家参考具体设置要根据你的需求而定)

[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd -g mysql mysql
[root@localhost /]# mkdir -p /data/mysql

修改mysql目录和data目录权限

[root@localhost local]# chown -R mysql:mysql /usr/local/mysql (注意你自己所在的目录啊,不要复制了就上)
[root@localhost local]# chown -R mysql:mysql /data/mysql

初始化mysql数据库

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/
Installing MySQL system tables...
OK
Filling help tables...
OK

上面2个OK 出现就可以了,接下来还需要修改两个目录的权限:

进入mysql目录让他的属主成为root(其实我一直不明白这句话背后的含义到底是什么,让root成为属主,之后项目运用的时候不都是mysql用户对数据库进行操作吗?,这点真的不太明白,如果有大神指导还希望倾囊相授!

[root@localhost mysql]# pwd

/usr/local/mysql

[root@localhost mysql]# chown -R root .

再将之前datadir目录也就是我这里设置的/data的属主改成mysql。

[root@localhost /]# chown -R mysql data

 

4.修改各种配置文件和启动服务

[root@localhost support-files]# cp my-medium.cnf /etc/my.cnf

这里配置文件大家可以看一下有好几个,找最适合你需求的,就像有的网游的武器有的是适合PVE的有的适合PVP,给2个连接关于my.cnf的详解

http://www.linuxidc.com/Linux/2013-07/87993.htm 介绍几个cnf不同之处

http://www.blogjava.net/hunter129/archive/2009/01/18/251744.html 配置文件参数详解

回到mysql目录执行下面命令

[root@localhost mysql]# bin/mysqld_safe --user=mysql

然后复制mysql.server到/etc/init.d/mysqld(我相信你懂是啥意思的)

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost /]# chmod +x /etc/init.d/mysqld (要是没有X你就加一个,有就算了)
[root@localhost /]# service mysqld start
Starting MySQL... SUCCESS!

看到这个你懂的,启动了! 

鸡动人心的时候到了!

 [root@localhost /]# /usr/local/mysql/bin/mysql -uroot (这样没密码是不对的,之后还会更新怎么加密码)
 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.20-log Source distribution
Copyright (c) 2000, 2011, 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>

感谢上帝!1024!