系统环境: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或者winscp、rz各种办法把tar包搞进目录下。
[root@localhost opt]# wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz
下载完之后,就会看到tar包了(图1)
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)
针对上图的解决方法,可以试试下面的命令(其中原因是什么我不清楚,求大神指点)
[root@localhost scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
当命令执行好之后,接下来会跳出另一个报错:(图3)
不要惊慌鸡动,仔细看报错信息,说是找不到什么什么,那我就想到是不是少装东西了,那我TM怎么知道少了什么,然后上帝告诉我了:(图4)
[root@localhost scripts]# yum install compat-libstdc++-33
感谢上帝!
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
找到basedir和datadir,根据你的实际情况修改他们,别忘了改好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 �Cu �Cp可能会提示“命令找不到”,心想日了狗了,因为我也遇到过啊,日他哥~,冷静下来一想,尼玛基础啊,系统默认去找/usr/bin/mysql请问你有么?,要没有咱们就老实的去/usr/local/mysql/bin下面运行吧你懂的,如果有傲娇一定要mysql直接可以运行,那就加PATH就是了,感谢上帝!(图5)
你懂的~感谢上帝~~!
二.源码包编译安装
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*
装完不要�N瑟,主角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!